PRAVILA TAKMIČENJA
Na ovoj stranici su navedena precizno pravila državnog takmičenja informatičara Bosne i Hercegovine BHOI. Od BHOI2006 se za ocjenjivanje zadataka i mnoge druge stvari koristi web sučelje o čemu upute možete preuzeti ovdje.
Takmičarski zadaci
Svi zadaci na BHOI takmičenjima su isključivo programerski zadaci i težište je na dizajniranju ispravnog i efikasnog algoritma.
Programski zadaci mogu se rješavati u bilo kojem ponuđenom programskom jeziku. Ulazne i izlazne operacije ograničavaju se isključivo na najelementarnije operacije (čitanje tekstualne datoteke i upis u tekstualnu datoteku), tako se pažnja takmičara može usmjeriti na sam algoritam. Nikakve specifičnosti programskih paketa nisu neophodne, niti se moraju koristiti. Slijedeće specifičnosti se neće uzimati u obzir i ne preporučuje se njihovo korištenje:
- Grafički izlaz;
- Manipulacija sa mišem;
- Napredna manipulacija sa datotekama;
- Napredna numerička obrada;
- Pozivi funkcija operativnog sistema.
Programski jezici
Za programiranje se mogu koristiti programski jezici Pascal ili C/C++. Na svakom računaru će biti instalirana slijedeća integrirana razvojna okruženja za navedene programske jezike:
- Dev-C++ verzije 4.9.9.2 ili novije za programske jezike C i C++;
- FreePascal verzije 2.0.0 ili novije za programski jezik Pascal.
Svi kompajleri će biti instalirani u potpunosti, uključujući i help datoteke. Programi se mogu pisati u bilo kojem ponuđenom programskom jeziku.
Takmičari trebaju biti upoznati sa programskim paketom koji izaberu uključujući i poznavanje biblioteka i modula koji se isporučuju uz kompajler. Neophodno je vladati integriranim razvojnim okruženjem, a posebno ugrađenim editorom, kompajlerom i debagerom.
Oprema za takmičenje
Za takmičenje se koriste PC računari, sa standardnom tastaturom, mišem i kolor monitorom. Takmičari će imati obezbijeđen bijeli papir i olovke. U takmičarsku sobu se ne smije unositi nikakva dodatna oprema, kao što su programske diskete, kalkulatori, uputstva, knjige i slično.
Broj zadataka i trajanje takmičenja
Takmičari dobijaju tri zadatka. Takmičenje traje 3 sata/časa (180 minuta) bez prekida. U slučaju da je plasman takmičara na kraju takmičenja izjednačen u smislu da se ne može odlučiti koji takmičari odlaze na međunarodno takmičenje, izbor se vrši na osnovu izrade rezervnog (četvrtog) zadatka, za koji takmičari imaju na raspolaganju 1 sat/čas.
Vanjske komunikacije
Jedine vanjske komunikacije koje su dozvoljene tokom rada programa su čitanje ulaznih datoteka, pisanje izlaznih datoteka i, eventualno, pozivi vanjskih funkcija u vanjskim bibliotekama, koje su specificirane u opisu zadatka.
Posebno, nije dozvoljeno pisanje na ulazno-izlazne portove (poput serijskih portova) ili pokušaj promjene sistemskog sata. Svaki pokušaj da se to uradi će rezultirati diskvalifikacijom i dodjelom 0 bodova.
Ulazni podaci
Svi programi treba da čitaju ulazne podatke isključivo iz tekstualnih (ASCII) datoteka navedenih u tekstu zadatka. Ovo je slučaj čak i ako program treba samo jednu ulaznu vrijednost. Imena ulaznih datoteka su data u opisu zadatka - nikakve izmjene imena nisu dozvoljene. Programi ne smiju čitati nikakve podatke sa tastature.
Može se pretpostaviti da se ulazni podaci slažu sa opisom zadatka, tj. da će format ulazne datoteke biti u skladu sa specifikacijama zadanim u tekstu zadatka, tako da nije potrebno provjeravati ispravnost ulaznih podataka.
Ulazni podaci se sastoje od niza vrijednosti. Vrijednost je ili cijeli broj ili neprazni niz znakova, kao što su slova ("a" do "z" i "A" do "Z") i cifre ("0" do "9"). Vrijednosti su razdvojene ili jednim razmakom ili oznakom kraja linije (end-of-line).
U pravilu, struktura ulazne datoteke je takva da ne morate brinuti o oznaci kraja datoteke (end-of-file). Ipak, može biti izuzetaka, koji tada moraju biti posebno navedeni u specifikacijama zadanim u tekstu zadatka.
Za svaki zadatak biće navedeni primjeri ulaznih datoteka, kako u opisu zadatka, tako i u izvjestaju judge-a.
Izlazni podaci
Izlazne podatke program treba da ispiše u tekstualnu (ASCII) datoteku u skladu sa specifikacijama zadanim u opisu zadatka. Imena izlaznih datoteka moraju biti potpuno ista kao što je naznačeno u tekstu zadatka.
Nije dozvoljeno da programi ispisuju bilo šta na ekran. U fazi razvoja programa može se koristiti ispis na ekran (za potrebe debagiranja), ali prije nego što se submituje konačna verzija koda, potrebno je ukloniti sve ispise na ekran iz programa (kao i system("pause") - ukoliko je korišten). U svakom slučaju, bilo kakav eventualni ispis na ekran neće se ocjenjivati.
Izlazni podaci se sastoje od niza vrijednosti. Vrijednost je ili cijeli broj ili neprazni niz znakova, kao što su slova ("a" do "z" i "A" do "Z") i cifre ("0" do "9"). Vrijednosti su razdvojene ili jednim razmakom ili oznakom kraja linije (end-of-line).
Format izlazne datoteke mora biti tačno u skladu sa specifikacijama zadanim u opisu zadatka.
Izlazni status
Svi programi treba da se završavaju "normalno", a ne prijavom greške ili na neki drugi način koji ukazuje na nenormalan završetak. Dakle, C i C++ programeri treba da main funkciju obavezno završe sa iskazom
return 0;
Nije dozvoljeno main funkciju definirati kao funkciju bez povratne vrijednosti (tj. kao void funkciju).
Zadaci
Svaki zadatak će biti odštampan na posebnom papiru. Za svaki zadatak, na papiru će biti navedeno ime zadatka, detaljan opis zadatka, opisi ulaznih i izlaznih datoteka, maksimalno vrijeme izvršavanja programa za svaki test i maksimalno dozvoljeno zauzeće memorije.
Zabranjeno je dirati papire sa zadacima ili tastaturu prije nego se da znak za početak takmičenja.
Pitanja
Pitanja je moguće postavljati isključivo u pisanoj formi, preko web interfejsa. Pitanja smiju biti samo vezana za zadatke, i moraju biti iskazana u formi koja omogućava odgovor DA/NE tipa, stoga na svako od pitanja može biti ponuđen samo jedan od slijedeća tri odgovora:
- Da;
- Ne;
- Bez komentara (tj. ne može se dati odgovor);
Takmičari mogu postavljati pitanja isključivo putem obrazaca za pitanja, koji će biti uključeni u web sučelje.
Organizacioni komitet će odgovoriti na svako pitanje takmičara. Pošto razmatranje pitanja može potrajati neko vrijeme, takmičar treba da nastavi rad dok ne dobije odgovor. Takmičar neće biti uključen u diskusiju o pitanju.
Takmičari se za pomoć mogu obratiti i redarima u računarskom centru. Redari neće davati nikakve odgovore koji se tiču zadataka, ali mogu odvesti takmičara do toaleta, i, eventualno, pomoći kod tehničkih problema sa računarom.
Rezervne kopije
Svi takmičari će moći praviti backup kopije svojih programa preko web sučelja. Ako sistem padne sa nepopravljivim kvarom, takmičarima će biti nadoknađeno samo vrijeme koje je utrošeno za zamjenu računara.
Završetak takmičenja
Svi takmičari će biti napomenuti o završetku takmičenja 15 i 5 minuta prije kraja takmičenja. Ovo vrijeme potrebno je iskoristiti za provjeru sljedećeg:
- Da li je uklonjeno debagiranje u programima?
- Da li je uklonjen izlaz na ekran?
- Da li programi kreiraju izlazne datoteke u traženom formatu?
Na znak da je takmičenje završeno, takmičari moraju odmah prestati sa radom.
Papiri sa zadacima mogu se ponijeti sa sobom.
Ocjenjivanje
Ocjenjivanje počinje odmah nakon završetka takmičenja. Testiranje programa se izvodi automatski pomoću posebnog programa za evaluaciju zadataka.
Ocjenjivanje programa vrši se na deset test primjera sa odgovarajućim ulaznim podacima. Ukoliko program takmičara za pojedini testni primjer daje izlaz koji odgovara zvaničnom izlazu, takmičar dobija 10 bodova. Osim ako je u tekstu zadatka naveden drugačiji sistem bodovanja.
Nakon završetka testiranja takmičarima će biti dozvoljeno da pogledaju izvještaj testiranja (gdje će biti prikazani zvanični test primjeri i rezultati koje je postigao program takmičara) koji će se nalaziti na web sučelju.