Potyczki Algorytmiczne
Otwarty ogólnopolski konkurs programistyczny 2018
 
 
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 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 cpp.

  • 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), 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,

  • 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 g++ -std=c++11 -static -O3 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.

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.