Polish version    English version  
  Historia OI -> IX OI 2001/2002 -> II Etap


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia 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
IX OI 2001/2002
Terminarz
Zadania
Wyniki III etapu
Wyniki II etapu
Wyniki I etapu
II Etap
Przepisy
Dla zawodnikow
Przydatne zasoby
Statystyki
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
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
 Historia OIG
 SIO
 MAIN
IX OI, II etap - Informacje techniczne (dokument dla zawodników)

Alternatywne formaty:PS PDF

Wstęp

Podczas II etapu ocenie podlegają kody źródłowe programów, niniejszy dokument ma na celu usystematyzowanie zasad, którymi należy się kierować przy ich pisaniu.

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

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

Rozwiązania mogą:

  • korzystać z biblioteki matematycznej (dla C/C++),
  • korzystać z biblioteki STL (dla C++),
  • otwierać do odczytu plik z danymi wejściowymi,
  • otwierać do zapisu plik z danymi wyjściowymi.

Rozwiązania powinny:

  • 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 powinien 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 DOS), oznacza to, że rozwiązania zadania o kodzie abc, będzie poszukiwane pod nazwami:
    • /home/oi/rozw/abc.{c|cpp|pas} oraz
    • C:\oi\rozw\abc.{c|cpp|pas}
    i jeśli nie zostanie znalezione pod żadną z tych nazw, uznawane jest to za brak rozwiązania. Na komputerze 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, system itp., dotyczy to również bibliotek dołączanych przez opcje kompilacji,
  • używać funkcji sieciowych (np. socket, gethostbyname, itp),
  • otwierać plików (oprócz wymienionych w poprzednim punkcie), w szczególności zabronione jest tworzenie plików tymczasowych,
  • wykorzystywać większej ilości pamięci niż 16MB,
  • kod źródłowy rozwiązania nie może przekraczać 100kb,
  • naruszać bezpieczeństwa systemowego,
  • oczekiwać na interakcję użytkownika.

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 przy użyciu kompilatora Free Pascal Compiler 1.0.4, następującym poleceniem:

ppc386 rozwiazanie.pas

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

gcc -lm rozwiazanie.c

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

g++ -lm rozwiazanie.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).

Na co należy zwrócić uwagę?

  • Ocenie podlegają kody źródłowe, które następnie będą kompilowane, stąd ważne jest by zawodnik zadbał o to, żeby kompilacja zakończyła się sukcesem, szczegółowe zapisy dotyczące kompilacji można znaleźć w rozdziale ``Kompilowanie rozwiązań''.
  • Programy powinny 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.
  • Poprawne nazwy programów, plików z danymi wejściowymi, wyjściowymi - rozwiązania testowane są automatycznie, jeśli program/dane nie zostaną znalezione pod nazwami podanymi w specyfikacji treści zadania, to kończy się to komunikatem: brak rozwiązania, błąd wykonania czy brak odpowiedzi. Uwaga! Ponieważ rozwiązania będą testowane w środowisku, w którym ważne są duże/małe litery w nazwach plików, stąd wszystkie nazwy plików powinny być pisane małymi literami, dokładnie tak, jak zostało podane w specyfikacji zadania.
  • 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.
  • Wypisywanie informacji na standardowe wyjście, jakkolwiek nie jest zabronione, może czasami znacząco wpływać na czas wykonania programu.



Wersja do druku