IZBORNE PRIPREME 2018
Hrvatski savez informatičara, Zagreb
od 4. do 6. travnja 2018.
PRAVILA
Pozivanje učenika
Na Izborne pripreme poziva se načelno 6-10 najbolje plasiranih učenika srednjih škola s Hrvatske informatičke olimpijade.
Konačnu odluku o broju pozvanih učenika, u skladu s tehničkim, financijskim i organizacijskim mogućnostima, donosi
Znanstveno povjerenstvo u suradnji s odgovornim organizatorom Hrvatskim savezom informatičara.
Na Izborne pripreme bez obzira na rezultat postignut na Hrvatskoj informatičkoj olimpijadi može direktno
biti pozvan učenik koji u tekućoj godini sudjeluje na Hrvatskoj informatičkoj olimpijadi, a ranije je
sudjelovao na nekoj Međunarodnoj informatičkoj olimpijadi (International Olympiad in Informatics - IOI).
Molbu za direktno pozivanje na Izborne pripreme učenik predaje Znanstvenom povjerenstvu, u pisanom obliku,
odmah po završetku natjecanja na Hrvatskoj informatičkoj olimpijadi.
U jednoj školskoj godini, učenik direktno može biti pozvan samo na jedno natjecanje (ili na Hrvatsku informatičku olimpijadu ili na Izborne pripreme).
Radno okruženje i provedba natjecanja
Natjecanje se održava kroz dva dana natjecanja, svaki dan u trajanju od 3-5 sati pri čemu se rješavaju 2-3
problemska zadatka, a dopušteni programski jezici za rješavanje zadataka su Python i C/C++. Sva natjecateljska računala
bit će opremljena isključivo Linux operacijskim sustavom.
Na računalima će biti instaliran sljedeći software (moguće su manje izmjene):
-
Ubuntu 16.04
-
web preglednik: Firefox, Chromium
-
editori: joe, vim, emacs, gedit, nano, scite, codeblocks, geany, lazarus, idle3
-
kompajleri: gcc/g++ 4.9
-
interpreteri: Python 2.7, Python 3.4
-
debuggeri: gdb, ddd
-
STL dokumentacija, CPP reference, Python 2/3 dokumentacija
Za vrijeme natjecanja, natjecateljima će biti dostupan papir i pisaći pribor. U slučaju da natjecatelj
želi koristiti vlastitu tipkovnicu, treba je predati tehničkom osoblju na provjeru prije početka probnog natjecanja.
Dopušteno je korištenje samo jednostavnih USB tipkovnica. Bežične tipkovnice nisu dozvoljene.
Natjecatelj u dvoranu za natjecanje ne smije unositi nikakve elektroničke uređaje, medije za pohranu podataka,
uređaje za komunikaciju, knjige, priručnike ili bilo kakav tiskani materijal.
Svaki natjecatelj će imati unaprijed određeno radno mjesto koje će biti označeno brojem. Nakon smještaja
na radno mjesto, natjecatelj će čekati službeni početak natjecanja i pri tom ne smije dirati računalo,
tipkovnicu, miša ili bilo koji drugi natjecateljski materijal.
Zadaci
Svi zadaci dizajnirani su da budu algoritamske prirode. U nekim zadacima efikasnost,
tj. brzina algoritma ima najveći udio u pisanju zadataka. Test podaci su unaprijed osmišljeni i koncipirani
na način da će programi koji koriste neke manje efikasne, ali valjane algoritme, također dobiti određeni
broj bodova. Test podaci bit će prilagođeni tako da razlikuju različite nivoe efikasnosti unutar zadanih ograničenja.
Stoga, natjecatelj ima mogućnost pokušaja rješavanja zadataka s laganim test primjerima iako ne mora znati
riješiti zadatak za složene primjere. Prilikom rješavanja zadataka, natjecatelj smije koristiti olovku i
papir za skiciranje i razradu algoritma.
-
STANDARDAN ZADATAK (BATCH) - rješenje zadatka je izvorna datoteka (source) programa koji čita
zadane podatke iz standardnog ulaza (stdin) i ispisuje traženi rezultat na standardni izlaz (stdout).
-
INTERAKTIVAN ZADATAK (REACTIVE) - rješenje zadatka je izvorna datoteka programa koji obavlja dijalog
sa suprotstavljenim programom izrađenim od strane organizatora. Pri tome natjecateljev program koristi
standardni ulaz i izlaz za komunikaciju sa suprotstavljenim programom.
-
ZADATAK SAMO S IZLAZOM (OUTPUT-ONLY) - rješenje zadatka je skup datoteka koje sadrže izračunate podatke.
Natjecatelj isporučuje zip ili tgz arhivu koja sadrži te datoteke ili barem neke od njih.
Za svaki zadatak biti će naznačeno memorijsko ograničenje koje se odnosi na sveukupnu zauzetost memorije
(izvršni kôd, stack, heap...). Također, za svaki zadatak zadano je i vremensko ograničenje po pojedinom test podatku.
Ulazni i izlazni podaci sastoje se od jednog ili više redova koji završavaju s end-of-line znakom,
uključujući i zadnji red. Svaki red sadrži niz ispisnih znakova od ASCII-32 do ASCII-126.
Format pojedinih ulaznih i izlaznih podataka bit će definiran unutar zadatka.
Upiti o zadacima
Tijekom natjecanja, natjecatelj ima mogućnost traženja pojašnjenja nekih elemenata zadatka.
Pitanja se predaju putem servera preko forme predviđene za upite.
Znanstveno povjerenstvo nakon primitka pitanja dat će jedan od sljedećih odgovora:
-
"DA"
-
"NE"
-
"BEZ KOMENTARA"
-
"PROČITATI PONOVO TEKST ZADATKA"
Poslužitelj / evaluator
Natjecanje se odvija u distribuiranom sustavu gdje su natjecateljska računala povezana
u lokalnu mrežu s natjecateljskim poslužiteljem / evaluatorom. Natjecateljsko računalo ima
pristup određenim servisima koje nudi natjecateljski poslužitelj: sustav za natjecanje,
pristup dokumentaciji te pristup pisaču. Natjecatelj rješava zadatak
na svom računalu te rješenje šalje na evaluator.
Natjecateljska računala neće biti povezana međusobno niti na Internet. Svaki pokušaj
natjecatelja za uspostavom takve veze, smatrat će se varanjem, te mogućom diskvalifikacijom.
U slučaju problema rada mreže, natjecatelj ne smije sam pokušavati otkloniti kvar,
već mora obavezno pozvati pripadnika tehničkog osoblja.
Ispisivanje
Ispisivati se mogu samo tekstualne datoteke. Nakon zahtjeva natjecatelja za ispisom preko servera,
član tehničkog osoblja dostavit će ispisane materijale. Natjecatelj ne smije sam napuštati
radno mjesto kako bi uzeo ispisane materijale. Ograničenja ispisa su 20 stranica i 100 KB.
Slanje
Natjecatelj rješenja šalje na evaluator putem Web preglednika. Programski jezik koji je koristio
natjecatelj evaluator određuje pomoću ekstenzije (*.py, *.c; *.cpp; *.cc; *.cxx) ili odabirom
programskog jezika iz padajućeg izbornika. Rješenja mogu biti poslana na evaluator za vrijeme trajanja
cijelog natjecanja. Ako natjecatelj pošalje više od jednog rješenja za isti zadatak, kroz sučelje "submit"
ima mogućnost odabira rješenja koje će se u konačnici vrednovati. Ako to ne učini, bodovat će se
ono rješenje za taj zadatak koje je ostvarilo najveći broj bodova.
Znanstveno povjerenstvo može ograničiti ukupan broj dozvoljenih slanja rješenja za određeni zadatak.
Testiranje
Natjecatelj može testirati svoja rješenja u evaluatorskom okruženju koristeći sučelje za testiranje.
Prilikom testiranja, natjecatelj mora poslati rješenje i ulazne podatke koje želi testirati.
Ograničenje ulaznih podataka koje natjecatelj treba poštovati, nalazit će se na sustavu.
Nakon izvršavanja, sustav će ispisati vrijeme izvođenja, izlazne podatke i eventualne greške.
Međutim, podaci o točnosti izvođenja neće se ispisati.
Spremanje
Natjecatelji imaju mogućnosti spremiti kopije svoje datoteka tijekom natjecanja na evaluator.
Natjecatelj može napraviti do 100 kopija, a veličina jedne tako spremljene datoteke
ne smije prelaziti 1 MB. Ukupna veličina svih spremljenih datoteka na evaluatoru ne smije prelaziti 10 MB.
Završetak natjecanja
15 minuta, 5 minuta i 1 minutu prije završetka natjecanja natjecatelji će biti obaviješteni o preostalom vremenu.
Po završetku natjecanja, natjecatelj mora odmah prekinuti sve aktivnosti i čekati za stolom
bez diranja računala, tipkovnice, miša i ostalih natjecateljskih materijala.
Prevođenje rješenja
Rješenja poslana na sustav prevodit će se sa sljedećim argumentima:
-
Python 2: Python 2.7
-
Python 3: Python 3.4
-
C: gcc -o xyz xyz.c -std=c99 -O2 -s -static -lm
-
C++: g++ -o xyz xyz.cpp -O2 -s -static -lm
-
C++11: g++ -o xyz xyz.cpp -std=c++11 -O2 -s -static -lm
Ocjenjivanje
Svaki zadatak ima nekoliko grupa od jednog ili više test primjera. Svaka grupa nosi određen broj bodova,
a bodovi za tu grupu dobit će se ako i samo ako svaki test primjer u njoj bude točno riješen
(odnosno djelomično rješen u slučaju zadatka s parcijalnim bodovanjem) i pritom poštuje zadana
vremenska i memorijska ograničenja iz teksta zadatka. Broj bodova na zadatku bit će zbroj bodova
po grupama test primjera tog zadatka. Ukupni broj bodova biti će zbroj bodova pojedinih zadataka.
Bodovat će se samo oni zadaci koji su poslani i zadovoljili evaluaciju od strane evaluatora.
Prošireni rezultati
Nakon slanja rješenja na evaluator, sustav će natjecatelju dojaviti detaljan rezultat izvođenja na primjerima
test podataka zadanim u tekstu zadatka. Dodatno, evaluator će natjecatelju dojaviti broj osvojenih bodova
za svaku pojedinu grupu test primjera, ali ne nužno i detaljne rezultate za pojedine test primjere iz grupe.
Pravila ponašanja i varanje
Svaki natjecatelj koji ometa druge, oštećuje opremu, pristupa drugim računalima,
komunicira s drugim natjecateljima ili prepisuje tuđi kod podložan je diskvalifikaciji s natjecanja.
Varanjem će se smatrati ako natjecateljev program pokazuje sljedeće karakteristike:
-
pristupa mreži
-
stvaranje novih procesa (fork())
-
otvara i kreira datoteke
-
napada ili kompromitira sigurnost sustava ili servera
-
izvršava druge programe
-
mijenja prava pristupa datotekama
-
iščitava informacije datotečnog sustava
-
poziva sistemske procedure koje nisu vezane uz rješavanje zadataka
Žalbe
Nakon završetka natjecanja i objavljivanja rezultata, moguće je u roku od 30 minuta podnijeti
žalbu pisanim putem. Znanstveno povjerenstvo će razmotriti žalbu i ako je ustanovljena greška u
sustavu evaluacije rješenja, sva predana rješenja za taj zadatak će se ponovo reevaluirati.
Reevaluirana rješenja odnosit će se na sve natjecatelje.
U Zagrebu, ožujak 2018.
Predsjednik Znanstvenog povjerenstva
doc. dr. sc. Ante Đerek, FER
Za Hrvatski savez informatičara
Krešimir Malnar, tajnik