Azi Finalele competiției internaționale de programare ICPC 2019 vor avea loc în orașul portughez Porto Reprezentanți ai Universității ITMO și alte echipe din universități din Rusia, China, India, SUA și alte țări. Să vă spunem mai detaliat.
icpcnews /Flickr/ CC BY / Fotografii de la finala ICPC-2016 de la Phuket
Ce este ICPC
ICPC este o competiție internațională de programare între studenți. Se desfășoară de peste 40 de ani - prima finală a trecut în 1977. Selecția se realizează în mai multe etape. Universitățile sunt împărțite pe regiuni (Europa, Asia, Africa, America etc.). Fiecare dintre ele găzduiește etape intermediare, în special semifinalele din Eurasia de Nord a avut loc la universitatea noastră. Câștigătorii etapelor regionale participă la finală.
La ICPC, echipele de trei participanți sunt rugate să rezolve o serie de probleme folosind un singur computer (neconectat la Internet). Astfel, pe lângă abilitățile de programare, sunt testate și abilitățile de lucru în echipă.
În timpul competiției, echipele va primi un computer pentru trei persoane. Rulează Ubuntu 18.04 și are vi/vim, gvim, emacs, gedit, geany și kate preinstalate. Puteți scrie programe în Python, Kotlin, Java sau C++.
Când o echipă rezolvă o problemă, o trimite către serverul de testare, care evaluează codul. Participanții nu știu ce teste efectuează aparatul. Dacă toate au succes, echipa primește puncte bonus. În caz contrar, se generează o eroare și elevii sunt trimiși să corecteze codul.
Conform regulilor ICPC, câștigă echipa care rezolvă cele mai multe probleme. Dacă există mai multe astfel de echipe, atunci câștigătorul este determinat de cel mai mic timp de penalizare. Participanții primesc minute de penalizare pentru fiecare problemă rezolvată. Numărul de minute este egal cu timpul de la începutul competiției până la acceptarea sarcinii de către serverul de testare. Dacă echipa găsește o soluție, atunci primește încă douăzeci de minute de penalizare pentru fiecare încercare greșită de a o depăși.
icpcnews /Flickr/ CC BY / Fotografii de la finala ICPC-2016 de la Phuket
Exemple de sarcini
Obiectivele campionatului necesită coordonarea și concentrarea echipei. În plus, ei testează cunoștințele despre algoritmi matematici individuali. Iată un exemplu de sarcină care a fost oferită participanților ICPC 2018:
În tipografie, există un termen „râu” - aceasta este o secvență de spații între cuvinte, care este formată din mai multe rânduri de text. Un anume expert în râu (pe bune) vrea să publice o carte. El dorește ca cele mai lungi râuri tipografice să se „formeze” pe pagină atunci când imprimă cu font monospațial. Participanții au trebuit să determine lățimea câmpurilor la care va fi îndeplinită această condiție.
La intrare, programul a primit un număr întreg n (2 ≤ n ≤ 2), care determină numărul de cuvinte din text. În continuare, a fost introdus textul: cuvintele de pe un rând erau separate printr-un spațiu și nu puteau avea mai mult de 500 de caractere.
La ieșire, programul trebuia să arate lățimea câmpurilor la care se formează cel mai lung „râu” și lungimea acestui râu.