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