II Eliminacje (2000-10-07) - regulamin
Uwagi ogólne
- 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.
- Właściwe zawody rozpoczynają się o godzinie 9:00 i trwają do 14:00. W związku z koniecznością rozlosowania miejsc w salach i przekazania ostatnich uwag o środowisku pracy zawodnicy powinni zebrać się o godzinie 8:30 na piątym piętrze.
- Końcowe wyniki eliminacji zostaną podane około 30 minut po zakończeniu rozwiązywania zadań.
- Całe zawody będą przeprowadzone (na wzór Mistrzostw Polski w Programowaniu Zespołowym i ACM CPC) 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 od klasy 486 33MHz do Celeron 333MHz. Ta dysproporcja nie powinna mieć wpływu na wyniki, gdyż do rozwiązania zadania nie będzie wymagany wydajny komputer.
- Zawodnicy będą pracowali w środowisku DOS/Windows w sieci Novell Netware. Nazwy użytkowników pod którymi należy się zalogować (razem z hasłami dostępu) będą podane tuż przed zawodami.
- Zadania będą oznaczone kolejnymi literami alfabetu A, B, C, ... Na swoim koncie (na dysku U:) należy utworzyć katalogi o nazwach odpowiadających zadaniom (np. U:\A, U:\E). Rozwiązania powinny składać się z jednego pliku, którego nazwa powinna odpowiadać zadaniu i językowi programowania, tzn. rozwiazanie zadania A w Pascalu powinno znajdować się w pliku U:\A\a.pas. Podobnie rozwiązanie zadania B w języku C powinno być umieszczone w pliku U:\B\b.c (wielkość liter nie ma znaczenia). Rozwiązania znajdujące się w innych plikach nie będą oceniane.
- Zadania można rozwiązywać w językach Pascal, C (jeśli tylko względy techniczne pozwolą, to zostanie dopuszczony również język C++ - poinformujemy o tym w późniejszym terminie). Do dyspozycji zawodników będą kompilatory Borland Pascal 7.0, Turbo Pascal 7.0, Borland C/C++ 3.1. Rozwiązania w języku Pascal powinny mieć rozszerzenie .pas, w języku C - .c.
- Rozwiązania zadań można zgłaszać do oceny wydając polecenie SUBMIT << ID_ZADANIA>> << JĘZYK_PROGRAMOWANIA>>, np. SUBMIT A pas, SUMBIT B c. Uwaga: Dla języka C należy koniecznie podać przy zgłoszeniu małą literę 'c'.
- W trakcie zawodów można drukować kody źródłowe. W tym celu należy przekazać sędziom kartkę ze zleceniem wydruku, tzn. zawierającą identyfikactor zawodnika oraz napis: PRINT << PLIK>>, np. TEAM01, PRINT U:\A\A.c.
Zadania i sposób ich oceniania
- Zawodnicy otrzymają do rozwiązania od 6 do 9 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 poleceniem SUBMIT (patrz pkt. środowisko pracy).
- Oceniając rozwiązanie sędziowie skompilują plik źródlowy i wykonają otrzymany program na danych testowych Jeżeli wyniki działąnia ocenianego rozwiązania będą identyczne z wynikami sędziów, 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ć,
- restricted function - w programie znajdują się wywołąnia niedozwolonych funkcji,
- 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 po upływie 10 minut od zgłoszenia rozwiązania do oceny zawodnik nie otrzyma żadnej odpowiedzi, powinien niezwłocznie zawiadomić o tym fakcie sędziów.
- 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.
Ranking
- W trakcie zawodów aktualne wyniki będą umieszczane w pliku U:\RANK.TXT oraz na stronie WWW Ligi Zadaniowej. Na około 60 minut przed zakończeniem zawodów wyniki przestaną być aktualizowane i zostaną ogłoszone dopiero po zakończeniu zawodów.
- 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: 64kB na kod, 64kB na zmienne globalne, 64kB na zmienne dynamiczne (sterta) oraz 16kB na stos. 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 stosować zbiorów (set).
- NIe wolno używać instrukcji break.
- 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:
- Ze względu na to, że programy będą kompilowane za pomocą kompilatora gcc w środowisku UNIX informujemy, że rozmiary typów całkowitych wynoszą w nim: short - 16 bitów, int - 32 bity, long - 32 bity. W celu uniknięcia problemów z pamięcią zalecamy więc stosowanie tylko typów short oraz long, których rozmiar jest taki sam jak w kompilatorze Borland C/C++ 3.1.
- Niedozwolone jest używanie pewnych funkcji takich jak np.: fork(), fopen(). Lista zabronionych funkcji znajduje się w pliku U:\REST.TXT.
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.
wstecz