Potyczki Algorytmiczne
Otwarty ogólnopolski konkurs programistyczny 2017
 
Google
partner
Atende
sponsor
Uniwerytet Warszawski
organizator
liczba uczestników
0
Ustalenia techniczne

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

  • dane wejściowe są poprawne,

  • programy będą uruchamiane w systemie operacyjnym Linux, na komputerze z procesorem 32-bitowym (dla zadań zwykłych) lub 64-bitowym (dla zadań rozproszonych).

Rozwiązania zadań mogą:

  • korzystać z biblioteki matematycznej,

  • korzystać z korzystać z biblioteki standardowej C++,

  • wypisywać na standardowe wyjście diagnostyczne stderr (komunikaty
    wypisane w ten sposób są ignorowane przez system sprawdzający; należy
    jednak pamiętać, że takie wypisywanie zużywa czas procesora, tak jak każda inna instrukcja); w zadaniach rozproszonych na standardowe wyjście diagnostyczne można wypisać co najwyżej 1MB danych.

Rozwiązania zadań muszą:

  • kończyć się kodem wyjścia równym 0. Każdy inny kod zakończenia programu jest równoznaczny błędowi wykonania.

  • być zapisane w pojedynczych plikach z rozszerzeniem c, cpp. Rozszerzenie powinno odpowiadać wybranemu językowi programowania:

    • .c dla języka C,

    • .cpp dla języka C++.

  • używać dostarczonej przez organizatora biblioteki do komunikacji pomiędzy instancjami programu (w zadaniach rozproszonych).

Rozwiązania 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., o ile w treści zadania wyraźnie nie zaznaczono inaczej; dotyczy to również bibliotek dołączanych przez opcje kompilatora,

  • zawierać wstawek w Assemblerze (w C/C++),

  • używać funkcji sieciowych (np. socket, send, itp); w wypadku zadań rozproszonych do komunikacji między instancjami wolno wykorzystywać wyłącznie dostarczoną przez organizatora bibliotekę,

  • otwierać plików, w szczególności zabronione jest tworzenie plików tymczasowych,

  • wykorzystywać większej ilości pamięci niż podano w treści zadania,

  • naruszać bezpieczeństwa systemowego,

  • oczekiwać na interakcję użytkownika,

  • w przypadku zadań rozproszonych - wypisywać więcej niż 1MB danych na standardowe wyjście (zwykłe lub diagnostyczne).

Ograniczenia:

  • kod źródłowy rozwiązania nie powinien przekraczać 100 KB, a kod wykonywalny 10 MB dla zadań zwykłych i 4MB dla zadań rozproszonych,

  • czas kompilacji rozwiązania nie powinien przekraczać 30 s dla zadań zwykłych i 10 s dla zadań rozproszonych,

  • wielkość pamięci operacyjnej dostępnej programom będzie podana w treści zadań (jednak ta wartość dotyczy sumarycznego zapotrzebowania na pamięć, a więc zawiera m.in. rozmiar kodu wykonywalnego, stosu, sterty itp.).

Kompilowanie rozwiązań

Nadesłane rozwiązania będą kompilowane na systemie Linux, 32-bitowym w przypadku zadań zwykłych i 64-bitowym w przypadku rozproszonych.

Język Wersja kompilatora

Polecenie kompilacji

C gcc 4.8.2 gcc -static -O2 -s abc.c -lm
C (rozproszone) gcc 4.7.2 gcc -std=c99 -static -O2 abc.c -lm
C++ gcc 4.8.2 g++ -std=c++11 -static -O2 -s abc.cpp -lm
C++ (rozproszone) gcc 4.7.2 g++ -std=gnu++0x -static -O2 abc.cpp -lm

Polecenie kompilacji może różnić się od tego w powyższej tabeli, jeżeli w treści zadania wyraźnie zaznaczono inaczej.


Użyty język programowania jest rozpoznawany 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, zdobędą zero punktów.

Finał

Podczas finału zawodnicy będą rozwiązywać zadania na dostarczonych przez organizatorów komputerach. Jedynym systemem operacyjnym dostępnym na tych komputerach będzie Linux. W trakcie zawodów zabronione jest korzystanie z Internetu, a także przyniesionych ze sobą książek, notatek, wydruków, telefonów komórkowych, laptopów oraz innych źródeł, które mogłyby zakłócić uczciwy przebieg zawodów.