Polish version    English version  
 


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia OI
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
 Historia OIG
 SIO
 MAIN
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.