Doporučení k soutěži
-
Názvy zdrojových souborů
Není nutno použít název zdrojového souboru shodný s názvem úlohy, kterou chcete odevzdat, ale je to doporučeno, neboť se takto vyvarujete omylu chybného odevzdání úlohy na nesprávné místo (tj. jako jinou úlohu).
Např.: Zdrojový soubor řešení ilustrační úlohy Pascalův trojúhelník vytvořený v jazyku Java se může jmenovat PascaluvTrojuhelnik.java.
-
Používání javovské třídy Scanner
I když je tato třída popsána na https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html, přesto není vždy správně používána. Pokud si nejste jisti, že třídu Scanner používáte správným způsobem, prohlédněte si ukázky dvou příkladů správného a dvou příkladů chybného použití této třídy.
-
Javovské soubory složené z více tříd a vytváření vlastních balíků
Pokud ve zdrojovém programu v Javě používáte více tříd, nesmí být tyto třídy uloženy v baliku (package). Název souboru musí být shodný se jménem třídy označené public a tato třída musí být umístěna jako první třída v souboru.
-
Programovací jazyk C/C++ čtení ze vstupu
K častým chybám dochází i v důsledku nesprávného čtení ze vstupu. Prohlédněte si ukázky dvou příkladů správného načítání dat v jazyce C a jednoho přikladu správného načítání v jazyce C++.
-
Programovací jazyky C/C++ - potenciální problémy
Abyste se vyhli problémům s překladem programů v jazycích C/C++, prohlédněte si přehled doporučení.
-
Programovací jazyk FreePascal - potenciální problémy
Nepoužívejte jednotku CRT. Pouhé její uvedení na klauzuli uses (uses crt;) může způsobit problémy s přesměrováním standardního vstupu a výstupu a tedy i s odevzdáním.
Neuvádějte příkaz readln; na konec programu, který se běžně používá, aby se zabránilo okamžitému zmizení okna s výsledky. Použití by mohlo vést k problémům s odevzdáním.
-
Odevzdávání řešení
Před každým odevzdáním řešení si zkontrolujte, máte-li správně nastavenou příponu souboru. Dejte rovněž pozor, pokud se váš název řešení neshoduje s názvem zadání úlohy, zda odevzdáváte své řešení na správném místě!
-
Chyba při validaci - "Špatné řešení - chybné výsledky"
Pokud jste obdrželi tuto validační zprávu a výsledek se zdá být správný, pečlivě si zkontrolujte výstup vašeho programu s ukázkou výstupu v zadání - patrně máte ve výstupu nějaký "bílý" znak (nejčastěji mezera či řádka) navíc nebo naopak tento znak chybí. Zvažte rovněž, zda jste v programu použili správné datové typy. Přečtěte si pozorně ještě jednou zadání úlohy.
-
Rozsahy některých datových typů
C/C++:
Datový typ Rozsah short int -32768..32767 int -2147483648..2147483647 unsigned short int 0..65535 unsigned int 0..4294967295 size_t 0..4294967295 V jazycích C/C++ lze použít soubor stdint.h, který definuje integerové typy o žádané velikosti; např: int16_t, int32_t a int64_t. V jazyce C++ lze rozsahy datových typů za běhu programu zjistit pomocí std::numeric_limits<integrální_datový_typ>::min() či ::max(), je-li inkludován soubor limits.h.
Chcete-li pomocí některé fuknce printf vytisknout proměnnou celočíselného typu int64_t, je třeba zvolit správnou specifikaci formátu. Validátor soutěže PilsProg používá lld, viz následující příklad:
int64_t cislo = 1234; printf("Cislo: %lld\n", cislo);
Java:
Datový typ Rozsah byte -128..127 short -32768..32767 int -21474836448..2147483647 long -9223372036854775808..9223372036854775807 Pascal:
Datový typ Rozsah Integer -32768..32767 Longint -2147483648..2147483647 Int64 -9223372036854775808..9223372036854775807 Word 0..65535 Longword 0..4294967295 -
Přesměrování vstupu a výstupu
Všechny problémy jsou zadány tak, že vstupní data jsou načítána ze standardního vstupu (klávesnice) a výstup má být vypsán na standardní výstup (obrazovku).
Abyste mohli jednoduše testovat programy, použijte přesměrování vstupu pomocí < a přesměrování výstupu pomocí >.
Pokud tedy chcete jako vstup programu P načíst data ze souboru vstup.txt, spusťte program takto:
P < vstup.txt
Chcete-li vypsat výstup programu P do souboru vystup.txt, spusťte program takto:
P > vystup.txt
A chcete-li načíst vstup ze souboru i vypsat výstup do souboru, použijte:
P < vstup.txt > vystup.txt
-
Doporučená strategie
Řešení úloh nemusíte odevzdávat v pořadí, ve kterém jsou zadané! Vzhledem ke způsobu měření času pro správně odevzdané řešení (celkový čas se pro každý příklad počítá od zahájení soutěže) je výhodné nejprve identifikovat a vyřešit nejlehčí úlohy (ty, které vyřešíte v nejkratším čase).
Příklad:
Když potřebujeme na vyřešení úlohy A 3 hodiny a na vyřešení úlohy B 30 minut, potom můžeme zvolit dvě strategie (Z je čas začátku soutěže a O čas odevzdání):
-
Nejprve těžší úlohu:
Řešíme nejprve úlohu A, a potom úlohu B.
Součet časů bude (OA-Z) + (OB-Z) = 3 + 3,5 = 6,5 hodiny. -
Nejprve lehčí úlohu:
Řešíme nejprve úlohu B a potom úlohu A.
Součet časů bude (OB-Z) + (OA-Z) = 0,5 + 3,5 = 4 hodiny.
-
Nejprve těžší úlohu: