Indywidualne Zawody w Programowaniu (2004-05-16) - regulamin
Uwagi ogólne
- W zawodach może startować maksymalnie 25 osób. Ograniczenie wynika z
liczby dostępnych stanowisk komputerowych. O uczestnictwie w zawodach decyduje
kolejność nadsyłania zgłoszeń.
- Każda osoba będzie miała do dyspozycji jeden komputer.
- Wolno korzystać z dowolnych materiałów nieelektronicznych (książki, notatki, wydruki kodów źródłowych).
- Zabronione jest jednak używanie takich pomocy jak: kalkulatory, notebooki, telefony komórkowe i inne pomoce elektroniczne. Zabronione jest również korzystanie z poczty elektronicznej, WWW, telnet-a itp.
Nieprzestrzeganie powyższych zasad zakończy się dyskwalifikacją
zawodnika.
- Właściwe zawody rozpoczynają się o godzinie 10:00 i trwają do 15:00. W związku z koniecznością rozlosowania miejsc w salach i przekazania ostatnich uwag o środowisku pracy zawodnicy powinni zebrać się o godzinie
9:30 na piątym piętrze.
- Zawody zostaną przeprowadzone w salach: 521, 522, 523, 528, 528A.
- Końcowe wyniki eliminacji zostaną podane około 30 minut po zakończeniu rozwiązywania zadań.
- Całe zawody będą przeprowadzone w języku angielskim. Dotyczy to treści zadań, a także komunikacji w czasie konkursu. (Wolno oczywiście korzystać ze słowników.)
- W czasie zawodów zabroniona jest jakakolwiek komunikacja pomiędzy zawodnikami.
Środowisko pracy
- Do dyspozycji zawodników będą komputery klasy PC.
- Zawodnicy będą pracowali w środowisku Windows.
- Zadania można rozwiązywać w językach Pascal, C, C++. Do dyspozycji zawodników będą kompilatory
Visual Studio .NET, Borland Delphi.
- Zadania będą oceniane automatycznie przez system oceniający, który jest
także wykorzystywany do oceny zadań w ramach Ligi Zadaniowej.
- Rozwiązania zadań można zgłaszać do oceny logując się do systemu
oceniającego.
Zadania i sposób ich oceniania
- Zawodnicy otrzymają do rozwiązania 6 zadań sformułowanych w języku angielskim.
- Dane wejściowe są podawane na standardowe wejście, a wyjściowe mają się pojawić na standardowym wyjściu.
- Jeżeli w treści zadania nie jest zaznaczone inaczej, to należy założyć, że dane wejściowe są poprawne i nie należy tego sprawdzać.
- Jeżeli w treści zadania nie zaznaczono inaczej, to każdy test ma tylko jedno poprawne rozwiązanie. Jeśli zaś rozwiązań jest więcej, to jest wyraźnie zaznaczone, które należy wybrać.
- Rozwiązania zadań należy zgłaszać do oceny do systemu oceniającego (patrz
pkt. Środowisko pracy).
- Rozwiązanie będzie kompilowane w systemie Linux przy użyciu kompilatora gcc 2.95.4 (język C/C++) i gpc 2.1 (język Pascal) i wykonane na danych testowych. Jeżeli wyniki działania ocenianego rozwiązania będą identyczne z wynikami
wzorcowymi, to zadanie zostaje zaliczone jako rozwiązanie. W przeciwnym razie zostanie odesłany zawodnikowi komunikat o zaistniałym błędzie. Możliwymi błędami są:
- compile time error - programu nie udało się skompilować,
- run-time error - program przerwał działanie dla danych testowych,
- time limit exceeded - program przekroczył limit czasu przewidziany na rozwiązanie zadania (ten błąd wystąpi także jeżeli program się "zawiesi"),
- memory limit exceeded - program przekroczył limit dostępnej pamięci,
- wrong answer - program podał błędną odpowiedź na któryś z testów,
- presentation error - wyniki wyglądają na poprawne, ale są sformatowane niezgodnie ze specyfikacją w treści zadania.
- Jeżeli program zostanie oceniony jako poprawny, to zawodnik otrzyma komunikat accepted.
- Jeżeli powstaną wątpliwości dotyczące jakiegoś zadania, pytanie należy skierować do sędziów pisemnie w języku angielskim. Następnie sędzia udzieli pisemnej odpowiedzi, która zostanie dostarczona wszystkim zawodnikom. Pytania powinny być tak sformułowane, aby była możliwość odpowiedzenia na nie yes / no. W przeciwnym wypadku sędzia udzieli odpowiedzi no comments.
Odpowiedź no comments będzie także udzielana na każde pytanie do którego
odpowiedź wynika z treści zadania.
Ranking
- W trakcie zawodów aktualne wyniki będą umieszczone na stronie w systemie
oceniającym.
- Ranking będzie tworzony na podstawie liczby rozwiązanych zadań. Zawodnicy, którzy rozwiązali taką samą liczbę problemów zostaną uszeregowani według sumarycznego czasu, który poświęcili na rozwiązywanie.
- Czas poświęcony na rozwiązanie każdego zadania jest mierzony od początku konkursu do momentu przesłania poprawnego rozwiązania. Za każde błędne rozwiązanie zawodnik otrzymuje karę 20 minut dodawaną do czasu rozwiązywania zadania. Przy ustalaniu rankingu brany jest tylko czas poświęcony na problemy rozwiązane (tzn. kary czasowe za zadania, których zawodnik nie rozwiązał nie są brane pod uwagę).
Ograniczenia
- Ogólne:
- Dla wszystkich zadań ustalono jednakowy limit dostępnej pamięci operacyjnej wynoszący:
16 MB. Przekroczenie tych limitów spowoduje odrzucenie rozwiązania i przesłanie komunikatu o błędzie wykonania lub przekroczeniu dostępnej pamięci.
- Dla każdego zadania ustalono limit czasu, w którym program powinien zakończyć działanie dla wszystkich testów. Limity dobrane są w taki sposób, aby akceptowalne były tylko rozwiązania o złożoności "zbliżonej" do optymalnej. W praktyce limity ustalono mnożąc czas wykonywania się programów wzorcowych przez czynnik 3-5.
- Zabronione jest stosowanie wstawek asemblerowych.
- Dla języka Pascal:
- Nie wolno używać żadnych modułow za wyjątkiem System, który jest dołączany domyślnie i w związku z tym nie należy stosować uses.
- Dla języka C/C++:
- Program nie może tworzyć podprocesów oraz plików.
Inne uwagi
- W celu maksymalnego zabezpieczenia się przed problemami technicznymi (np. z siecią komputerową) sugerujemy w miarę częste zapisywanie plików źródłowych na dysk.
Osoby zgłoszone do udziału w zawodach
- Krzysztof Kapuścik
- Tomasz Wojdyła
- Michał Czardybon
- Adam Pukownik
- Radosław Krześniak
- Mirosław Wlazło
- Michał Dybizbanski
- Mikołaj Walczyk
- Dariusz Czechowski
- Łukasz Nowak
- Jarosław Życinski
- Aleksander Łudzik
- Krzysztof Adamczyk
- Michał Batko
- Aleksander Chrószcz
- Piotr Jastrzębski
- Maciej Łaszcz
- Grzegorz Głowacki