Prihlásenie Registrácia  

Pravidlá súťaže

Súťaž PALMA (Programovanie Algoritmy Matematika) je súťažou v programovaní pre stredoškolákov. Jej cieľom je dať príležitosť všetkým, ktorí si chcú zasúťažiť, otestovať svoje schopnosti analyzovať problémy, hľadať algoritmy na ich riešenie a v neposlednom rade ich vedieť i rýchlo, efektívne a korektne naprogramovať.

Štruktúra súťaže

PALMA je súťažou dvojčlenných tímov. Súťažiaci v tíme nemusia byť nutne z tej istej strednej školy. Súťaž tvoria dve on-line kolá a jedného finálové kolo. On-line kolá prebiehajú cez Internet, na finálové kolo bude treba cestovať, pričom na finálovom kole môže tím používať len jeden počítač.

Súťaž má prebiehať v štýle fair-play. Súťažiaci nesmú podvádzať, akékoľvek narušenie poctivého priebehu súťaže sa trestá diskvalifikovaním. Počas súťaže je možné používať zdroje informácií, ktoré existovali aj pred začiatkom súťaže (knihy, výpisy programov, atď., ale nie je dovolené komunikovať s niekým mimo tímu). Vo finálovom kole bude možné používať len vytlačené materiály (nemôžu sa používať diskety, USB kľúče, Internet a pod.).

Finálové kolá

Na finále postupuje spravidla 10 tímov podľa výsledkov v kvalifikačných kolách. V prípade, že sa niektorý tím vzdá účasti, postupuje namiesto neho ďalší tím v poradí podľa výsledkovej listiny. Organizátori súťaže si môžu pred začiatkom finálového kola vyžiadať potvrdenie o návšteve školy. Potvrdenie musí obsahovať pečiatku školy a text potvrdzujúci, že obaja členovia tímu navštevujú danú školu (môžu to byť dve osobitné potvrdenia). Spôsob jeho doručenia bude upresnený pred konaním finálového kola.

Priebeh jedného kola súťaže

Aby sa súťažiaci mohol kola oficiálne zúčastniť, musí sa jeho zaregistrovaný tím na súťaž aktivovať najskôr dva dni, najneskôr 5 minút pred súťažou. Aktivovaním potvrdzuje, že súhlasí s pravidlami a podmienkami daného kola. Neoficiálne sa môže zúčastniť ktokoľvek, bez nutnosti aktivovania na súťaž. Súťažiaci majú za úlohu riešiť sadu úloh počas daného časového limitu (rádovo niekoľko hodín).

Zadanie tiež obsahuje časový a pamäťový limit, v ktorom musí program pracovať. Tieto limity sa vzťahujú na jeden testovací vstup (jedno spustenie programu). Môžete predpokladať, že náš program úspešne zbehne na všetkých vstupoch v zlomkoch (menších ako 1) daných limitov.

Riešením úlohy je program v jazyku Pascal, C, C++ alebo Java. Program musí vstup načítať zo štandardného vstupu (stdin, ,,klávesnica'') a vypísať výstup v presne špecifikovanom formáte na štandardný výstup (stdout, ,,obrazovka''). Formát vstupu nie je potrebné kontrolovať, vstupné dáta budú mať určite správny formát. Vždy odporúčame vyskúšať si program na vzorovom vstupe.

Ak si súťažiaci myslí, že úlohu vyriešil, môže ju odoslať na testovanie automatickému testovaču. Ten riešenie vyskúša na neverejných vstupných dátach. Tieto dáta môžu byť rozdelené do niekoľkých sád popísaných v zadaní. Program musí v danom časovom a pamäťovom limite korektne vypísať správny výsledok na všetkých testovacích vstupoch. Neprideľujú sa žiadne body za čiastočne správne riešenia. Výsledkom testovania na každej sade vstupov môže byť jedna z nasledujúcich hlášok:

IgnorovanéPríklad už raz bol úspešne prijatý, alebo sa prekročil limit na počet riešení. Ďalšie pokusy sa ignorujú.
Chyba kompilácieKompilátor vrátil chybu -- program sa nepodarilo skompilovať
Vypršal časový limitVypršal časový limit pre beh programu
Chyba počas behuProgram skončil s návratovým kódom iným ako 0 (v Pascale Runtime error)
Zakázaná funkciaProgram sa snažil použiť jednu zo zakázaných funkcií (práca so súbormi, procesmi...)
Ukončené signálomProgram skončil na jeden zo signálov (napr. Segmentation fault)
Zlá odpoveďProgram nevypísal správny výsledok
Chyba prezentácieVýsledok je vypočítaný správne, ale výstup nie je v požadovanom tvare (medzery navyše, chýba koniec riadku,...)
PrijatéRiešenie je prijaté - jedine v tomto prípade sa príklad sa považuje za úspešne vyriešený

V prípade, že riešenie nebolo správne, súťažiaci môže riešenie upraviť a poslať ho na odtestovanie znovu. Počet riešení, ktoré môže súťažiaci poslať na jeden príklad je obmedzený na 15.

Po skončení kola sa kolo presunie do archívu, kde je možné si cvične posielať riešenia a pozerať správne riešenia ostatných súťažiacich.

Hodnotenie

Každý úloha má pridelený počet bodov. Súťažiaci sú vo výsledkovej listine zotriedení podľa súčtu bodov za úspešne vyriešené príklady (čím viac, tým lepšie). V prípade zhody je rozhodujúcim kritériom celkový čas (čím menší, tým lepšie). Celkový čas je súčet časov za všetky úspešne vyriešené príklady. Čas za príklad je čas v sekundách, ktorý uplynie od začiatku súťaže po úspešné vyriešenie príkladu plus 20 trestných minút za každé odmietnuté riešenie tohto príkladu bez ohľadu na čas jeho odovzdania. Príkladom, ktoré neboli úspešne vyriešené sa neráta žiaden čas.

Ak ešte stále niektoré tímy zdieľajú miesto a od ich rozlíšenia závisí postup do finále, uplatňujú sa nasledujúce pravidlá v tomto poradí:

  • súčet počtu trestných minút (čím menej, tým lepšie)
  • čas prvého odoslania riešenia (čím skôr, tým lepšie)
  • postupujúceho určuje porota

Jazyk

Zadania úloh, ako aj testovací systém budú v Slovenčine.

Pravidlá

Pravidlá sú záväzné pre všetkých súťažiacich. V prípade snahy o porušenie pravidiel môže byť súťažiaci diskvalifikovaný zo sútaže. Konečné slovo má pri rozhodovaní porota. Ak na to má vážny dôvod, môže konať aj proti týmto pravidlám.

Technické informácie

Testovanie riešení prebieha na Linuxe. Vstup a výstup sa programu posiela presmerovaním štandardného vstupu a výstupu. Veľkosť zásobníka (stacku) je bez ohľadu na pamäťový limit obmedzená na 8 MB. Veľkosť zdrojového kódu je obmedzená na 100kB. Používané kompilátory sú GCC pre C/C++ a Free Pascal pre Pascal. Informácie o verziách sa dajú nájsť na stránke.

Prostredie na finálových kolách bude vždy upresnené finalistom niekoľko týždňov pred finále.

júl 2017

PoUtStŠtPiSoNe
     12
3456789
10111213141516
17181920212223
24252627282930
31      

august 2017

PoUtStŠtPiSoNe
 123456
78910111213
14151617181920
21222324252627
28293031