Doporučení k soutěži

  1. 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.

  2. 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.

  3. 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.

  4. 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++.

  5. 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í.

  6. 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ě!

  7. 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.

  8. Rozsahy některých datových typů

    C/C++:

    Datový typ Rozsah
    short int-32768..32767
    int -2147483648..2147483647
    unsigned short int0..65535
    unsigned int0..4294967295
    size_t0..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ý typRozsah
    byte-128..127
    short -32768..32767
    int -21474836448..2147483647
    long -9223372036854775808..9223372036854775807

    Pascal:

    Datový typRozsah
    Integer -32768..32767
    Longint -2147483648..2147483647
    Int64-9223372036854775808..9223372036854775807
    Word 0..65535
    Longword 0..4294967295
  9. 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 
  10. 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í):

    1. 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.
    2. 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.

Zpět na Základní informace
Zpět na Problémy a řešení