Polish version    English version  
  History of OI -> X OI 2002/2003 -> Stage II


 News
 About Olympic
 History of OI
XVII OI 2009/2010
XVI OI 2008/2009
XV OI 2007/2008
XIV OI 2006/2007
XIII OI 2005/2006
XII OI 2004/2005
XI OI 2003/2004
X OI 2002/2003
Schedule
Problems
Stage III - results
Stage II - results
Stage I - results
Stage II
Rules
For contestants
Helpful resources
IX OI 2001/2002
VIII OI 2000/2001
VII OI 1999/2000
VI OI 1998/1999
V OI 1997/1998
IV OI 1996/1997
III OI 1995/1996
II OI 1994/1995
I OI 1993/1994
 OI books
 National team
 Olympic camps
 Photo gallery
 Links
 SIO
 MAIN
This document is not available in English version.

X OI, II etap - Ustalenia techniczne i rady dla zawodników

Alternatywne formaty:PS PDF

Można założyć, że:

  • dane wejściowe są poprawne,
  • programy będą uruchamiane w systemie operacyjnym Linux, na komputerze z procesorem Pentium (lub lepszym),
  • program będzie miał do dyspozycji 32MB pamięci (jednak ta wartość dotyczy sumarycznego zapotrzebowania programu na pamięć, a więc uwzględnia rozmiar kodu wykonywalnego, stosu, danych, sterty, itp.).

Rozwiązania mogą:

  • korzystać z biblioteki matematycznej (tylko w przypadku C/C++),
  • korzystać z biblioteki STL (dla C++).

Rozwiązania muszą:

  • kończyć się kodem wyjścia równym 0. Każdy inny kod zakończenia programu jest równoznaczny błędowi wykonania.
  • plik z rozwiązaniem musi nosić nazwę ???.{c|cpp|pas}, gdzie ??? jest trzyliterowym skrótem zadania, np. abc.pas, czy abc.cpp. Rozszerzenie pliku odpowiada wybranemu językowi programowania:
    .pas - dla języka Pascal,
    .c - C,
    .cpp - C++,
  • być umieszczone bezpośrednio w katalogu /home/oi/rozw/ (w przypadku korzystania z systemu Linux) lub C:\oi\rozw (dla Windows). Oznacza to, że rozwiązania zadania o identyfikatorze abc, będzie poszukiwane pod nazwami:
    • /home/oi/rozw/abc.{c|cpp|pas} oraz
    • C:\oi\rozw\abc.{c|cpp|pas}
    Wyszukiwanie zakończone porażką oznacza brak rozwiązania. W podanych katalogach może być umieszczone tylko jedno rozwiązanie każdego zadania.

Rozwiązanie zadań nie mogą:

  • tworzyć nowych procesów, czy wątków,
  • uruchamiać innych programów,
  • korzystać z zewnętrznych bibliotek (oprócz biblioteki matematycznej dla C/C++), np. crt, graph itp. Dotyczy to również bibliotek dołączanych przez opcje kompilatora.
  • używać funkcji sieciowych (np. socket, send, itp),
  • otwierać plików, w szczególności zabronione jest tworzenie plików tymczasowych,
  • wykorzystywać większej ilości pamięci niż 32MB,
  • naruszać bezpieczeństwa systemowego,
  • oczekiwać na interakcję użytkownika.

Kod źródłowy rozwiązania nie może przekraczać 100KB. Po skompilowaniu (w systemie Linux) kod rozwiązania nie może przekraczać 10MB.

Naruszenie powyższych zasad może mieć różne konsekwencje, od nieprzewidywalnego działania programu, do dyskwalifikacji włącznie.

Kompilowanie rozwiązań

Rozwiązania napisane w języku Pascal będą kompilowane w systemie Linux przy użyciu kompilatora Free Pascal Compiler 1.0.6 następującym poleceniem:

ppc386 -O2 -XS abc.pas

Rozwiązania napisane w języku C będą kompilowane w systemie Linux przy użyciu kompilatora GCC 2.95 następującym poleceniem:

gcc -O2 -static -lm abc.c

Rozwiązania napisane w języku C++ będą kompilowane w systemie Linux przy użyciu kompilatora GCC 2.95 następującym poleceniem:

g++ -O2 -static -lm abc.cpp

Użyty język programowania rozpoznawany jest na podstawie rozszerzenia pliku. Nie jest możliwy inny sposób kompilacji (np. przy pomocy plików Makefile). Programy które nie będą kompilować się w podany powyżej sposób nie podlegają ocenie. Na stanowiskach roboczych będzie zainstalowane odpowiednie oprogramowanie umożliwiające użytkownikom systemu Windows na proste zweryfikowanie rozwiązań w systemie Linux.

Rady dla uczestników

  • Przed rozpoczęciem sesji próbnej sprawdź konfigurację sprzętu i oprogramowania, zgłoś wszelkie uwagi.
  • W czasie przeznaczonym na zadawanie pytań, formułuj pytania tak, aby można było na nie odpowiedzieć "TAK" lub "NIE". Pytania mogą dotyczyć jedynie treści zadania. Jeśli Twoje pytanie nie spełni tych dwóch kryterów otrzymasz odpowiedź "BEZ ODPOWIEDZI".
  • Nie czekaj na odpowiedź na zadane pytanie, rób w tym czasie coś innego.
  • Nie ma potrzeby sprawdzanie poprawności danych wejściowych.
  • Ocenie podlegają kody źródłowe, które następnie będą kompilowane w systemie Linux, zatem ważne jest by zawodnik zadbał o to, żeby kompilacja kończyła się sukcesem. Szczegółowe zapisy dotyczące kompilacji można znaleźć w rozdziale "Kompilowanie rozwiązań". W szczególności:
    • nie należy używać plików nagłówkowych typowych dla środowiska DOS/Windows, np. conio.h, windows.h,
    • GCC w wersji dla systemu Linux inaczej traktuje niestandardowe argumenty do funkcji printf, takie jak %D czy %F, zamiast nich należy używać odpowiednio %d, %f,
  • Programy muszą zwracać kod wyjścia równy 0. Jest to ważne zwłaszcza w C/C++, gdzie konieczne jest dodanie return 0 w funkcji main. Gdy program zwraca inny kod wyjścia, traktowane jest to jako błąd wykonania.
  • Zadbaj o poprawne nazwy programów.
  • Zadbaj o zgodność odpowiedzi generowanych przez rozwiązania ze składnią podaną w treści zadania. Jedynymi dopuszczalnymi odstępstwami są:
    • białe znaki (spacja, znak tabulacji) na końcu wiersza, (np. '0_1_' zamiast '0_1'),
    • białe znaki (spacja, znak tabulacji, znak końca linii) na końcu pliku.
  • Często twórz kopie zapasowe swojej pracy. W przypadku awarii sprzętu otrzymasz tylko tyle dodatkowego czasu, ile zajęło usunięcie awarii.
  • Każdego dnia po zawodach koniecznie weź udział w rozmowie z Jury. Jest to dla Ciebie szansa na zgłoszenie uwag, które mogą wpłynąć na ocenę Twojego rozwiązania.