Danas Finale međunarodnog natjecanja u programiranju ICPC 2019. održat će se u portugalskom gradu Portu. Na njemu će sudjelovati predstavnici Sveučilišta ITMO te drugi timovi sa sveučilišta iz Rusije, Kine, Indije, SAD-a i drugih zemalja. Recimo vam detaljnije.
icpcnews /flickr/ CC BY / Fotografije s finala ICPC-2016 u Phuketu
Što je ICPC
ICPC je međunarodno natjecanje studenata u programiranju. Održavaju se preko 40 godina – prvo finale bio sam davne 1977. godine. Odabir se provodi u nekoliko faza. Sveučilišta su podijeljena po regijama (Europa, Azija, Afrika, Amerika itd.). Svaki od njih domaćin je srednjih faza, posebno polufinala Sjeverne Euroazije održao na našem sveučilištu. U finalu sudjeluju pobjednici regionalnih etapa.
Na ICPC-u se od timova od tri sudionika traži da riješe niz problema koristeći jedno računalo (koje nije povezano s internetom). Tako se osim programerskih provjeravaju i vještine timskog rada.
Tijekom natjecanja timovi dobit će jedno računalo za tri osobe. Pokreće Ubuntu 18.04 i ima predinstalirane vi/vim, gvim, emacs, gedit, geany i kate. Možete pisati programe u Pythonu, Kotlinu, Javi ili C++.
Kad tim riješi problem, prosljeđuje ga poslužitelju za testiranje koji procjenjuje kod. Sudionici ne znaju koje testove stroj izvodi. Ako su svi uspješni, tim dobiva bonus bodove. U suprotnom, generira se pogreška i studenti se šalju da isprave kod.
Prema ICPC pravilima pobjeđuje tim koji riješi najviše problema. Ako je više takvih ekipa, pobjednik se određuje prema najmanjem kaznenom vremenu. Za svaki riješeni problem sudionici dobivaju kaznene minute. Broj minuta jednak je vremenu od početka natjecanja do prihvaćanja zadatka od strane test poslužitelja. Ako tim pronađe rješenje, tada dobiva dodatnih dvadeset minuta kazne za svaki netočan pokušaj prolaska.
icpcnews /flickr/ CC BY / Fotografije s finala ICPC-2016 u Phuketu
Primjeri zadataka
Ciljevi prvenstva zahtijevaju momčadsku uigranost i koncentraciju. Dodatno se provjerava poznavanje pojedinih matematičkih algoritama. Evo primjera zadatka koji je ponuđen sudionicima ICPC 2018:
U tipografiji postoji pojam "rijeka" - to je niz razmaka između riječi, koji se sastoji od nekoliko redaka teksta. Određeni stručnjak za rijeke (stvarno) želi objaviti knjigu. On želi da se najduže tipografske rijeke "formiraju" na stranici kada se ispisuje jednostrukim fontom. Sudionici su morali odrediti širinu polja na kojoj bi taj uvjet bio ispunjen.
Program je na ulazu dobio cijeli broj n (2 ≤ n ≤ 2) koji određuje broj riječi u tekstu. Zatim je upisan tekst: riječi u jednom retku bile su odvojene jednim razmakom i nisu mogle imati više od 500 znakova.
Na izlazu je program morao prikazati širinu polja na kojima se formira najduža "rijeka" i duljinu te rijeke.