Prvo kolo UPM 2014

Po poskusnem kolu, ki ga je spremljalo nekaj tehničnih težav (te so zdaj seveda že odpravljene), je prišel čas za prvo kolo Univerzitetnega programerskega maratona 2014. V četrtek, 10. 4. 2014, bo šlo zares! Tekmovalci se v učilnicah zberete ob 16:00, tekmovanje pa se bo predvidoma začelo ob 16:15. V Mariboru se dobimo v učilnici F-103 na Smetanovi 17V Kopru se dobimo v učilnici FAMNIT-P-RU2. Razpored ljubljanskih ekip po učilnicah je sledeč:

  • LRI1 (Tržaška 25, 4. nadstropje) - {"MGB", "NameNotFound404", "17 nepekoče", "O(scilator)", "Gladiatorji", "Vlakec Tomaž in njegova programerska žilica", "Fizikalci", "And Yet It Compiles", "Umiti zobki", "The Infinite Loop", "Ekipa 1815"}
  • LRI5 (Tržaška 25, klet) - {"|) |_| ]-[ ( |", "Game of code", "VGV", "achtung die", "Ime ekipe", "Pitoni++", "Interdisciplinarci", "Seed AI", "ProgrameroVIČi", "Zamudniki", "Ekonomisti"}
  • P19 (Tržaška 25, 1. nadstropje) - {"The A Team", "MiNi", "Javatar-RELOADED", "#2498F1", "test group please ignore", "exRule #34", "Johnson", "Otroci iz zavoda"}
  • JB (Jadranska 19) - {"Programatorji", "MobilMaka", "Muzik.bot.nu", "harbL garbL, sej smo na morju", "NullPointer", "ancient geeks", "Donkey Punchin Kangaroos", "Tankerji"}

Lokacije učilnic najdete na povezavah http://www.fri.uni-lj.si/si/fakulteta/kako_do_nas/ in http://www.fri.uni-lj.si/si/fakulteta/kje_je_kaj/. Če smo katero od ljubljanskih ekip spregledali, nam to prosim čim prej sporočite na prijave@upm.si. Po koncu tekmovanja se zberemo v avli Fakultete za računalništvo in informatiko. V eni od prostih predavalnic bo sledila še predstavitev rešitev tekmovalnih nalog in razglasitev rezultatov.

Pripravili smo vam še nekaj navodil in koristnih nasvetov:

  1. S seboj imate lahko knjige in zapiske. Lahko si natisnete tudi izvorno kodo algoritmov (na papir) in jo imate s seboj na tekmovanju. Ne smete pa imeti nič elektronskega (razen srčnega spodbujevalnika). Mobiteli, USB ključi, iPodi in podobne naprave so torej prepovedane. Prav tako ni dovoljeno uporabljati interneta. Dokumentacija bo dostopna na sodniškem sistemu.
  2. Če programirate v C/C++ poskrbite, da bo na dnu funkcije main stavek return 0; Če se vaš program ne bo končal s kodo 0, bo sodniški sistem mislil, da se je sesul. Prav tako ne kličite system("PAUSE"); ali česa podobnega.
  3. V C/C++ je pri nalogah, ki imajo veliko količino vhodnih podatkov, pametno uporabljati funkciji printf in scanf, saj sta hitrejši od streamov (cin in cout). Na velike vhodne podatke bodite pozorni tudi v drugih programskih jezikih.
  4. Vprašanja, ki se nanašajo na naloge (če mislite, da je v besedilu napaka, če je nejasno napisano ipd.), lahko postavljate na temu namenjenem forumu (na sodniškem sistemu je pod besedilom naloge povezava na ta forum). Nadzorne osebe v učilnicah na tovrstna vprašanja ne smejo odgovarjati. Na njih se lahko obrnete v primeru, če vam ne deluje hardware ipd.
  5. Slovenski razpored tipk na tipkovnici lahko nastavite v ukazni vrstici:
    $ setxkbmap si
    Če želite ameriški razpored tipk:
    $ setxkbmap us
  6. Prepričajte se, da vaš program deluje pravilno na primeru vhoda, ki je naveden pri nalogi. Vhodne podatke lahko shranite v datoteko npr. "vhod.txt". V ukazni vrstici lahko program (denimo, da se le-ta imenuje "naloga") potem kličete takole:
    $ ./naloga < vhod.txt > izhod.txt
    Namesto s standardnega vhoda (tipkovnice) bo program podatke bral iz datoteke "vhod.txt" in pisal v datoteko "izhod.txt" namesto na standardni izhod (zaslon).
  7. Tipično so naloge take, da vhod sestoji iz več testnih primerov. Opis vhodnih podatkov je tipično nekaj takega: "Prva vrstica vsebuje celo število T. Sledi T testnih primerov ..." Splača se program preizkusiti tudi tako, da "podvojite" testne primere. Na primer iz vhodnih podatkov
    3
    Primer A
    Primer B
    Primer C

    naredite

    6
    Primer A
    Primer B
    Primer C
    Primer A
    Primer B
    Primer C

    Če program na drugi "kopiji" podatkov ne daje enakih rezultatov kot na prvi, ste najbrž pozabili nekaj inicializirat.

  8. Na sodniškem sistemu je v dokumentaciji navedeno, s katerimi stikali se prevajajo programi na sodniku. Priporočamo, da preizkusite, ali se vaš program prevede s temi stikali, preden ga oddate na sodniški sistem.
  9. Če niste prepričani, ali program deluje dovolj hitro, lahko zgenerirate naključen testni primer, ki ustreza omejitvam vhodnih podatov iz besedila naloge in je "maksimalen" (tj. če piše, da ima graf N vozlišč, kjer je 2 <= N <= 10000, potem zgenerirajte naključen graf, ki ima N = 10000 vozlišč ipd.). Včasih je težko generirati testne primere, saj morajo le-ti imeti neke dodatne lastnosti, dostikrat pa ni posebej velik problem.

Veliko uspeha na tekmovanju!