Regulamin
- Cel AlgoLigi:
- Głównym celem AlgoLigi jest umożliwienie użytkownikom systemu Sphere Online Judge (SPOJ) podnoszenia swoich umiejętności poprzez udział w konkursach programistycznych oraz ich współorganizację. Zamierzonym efektem tych działań jest rozwój społeczności związanej z polską wersją platformy SPOJ.
- Organizacja AlgoLigi:
- Rozgrywki AlgoLigi składać się będą z jednego albo większej liczby konkursów programistycznych nazywanych również rundami.
- Organizatorem rundy może zostać dowolna osoba albo grupa osób, która zgłosi taką chęć koordynatorom AlgoLigi. W związku z powyższym organizatorami zawodów mogą zostać również aktualni uczestnicy rozgrywek.
- Organizatorzy każdego z konkursów muszą się stosować do wymagań (głównie technicznych) określonych przez koordynatorów AlgoLigi.
- Terminy kolejnych rund będą zamieszczone w dziale wiadomości na stronie AlgoLigi w systemie SPOJ. Każdy konkurs ogłaszany będzie co najmniej z tygodniowym wyprzedzeniem.
- Przebieg zawodów (rundy AlgoLigi):
- Przewidywany czas trwania rundy wynosić będzie 32 godziny.
- Na początku zawodów zostanie przedstawionych 8-12 nowych zadań algorytmicznych do rozwiązania.
- W szczególnych przypadkach liczba zadań oraz czas trwania rundy mogą ulec zmianie o czym zawodnicy będą informowani przy okazji ogłoszenia terminu zawodów.
- Rozwiązania zadań można nadsyłać do czasu zakończenia danej rundy.
- Podczas trwania zawodów dostępny będzie ranking zawodników.
- Uczestnicy:
- Udział w zawodach może wziąć każdy zarejestrowany użytkownik systemu SPOJ (rejestracja jest bezpłatna).
- Wysyłanie i ocenianie rozwiązań w trakcie zawodów (rundy AlgoLigi):
- Treści zadań sformułowane są w języku polskim.
- Rozwiązania zadań w postaci kodów źródłowych zawodnicy przesyłają za pomocą formularza na stronie zawodów w systemie SPOJ.
- Uczestnicy zobowiązują się do samodzielnego rozwiązywania zadań oraz nie udzielania jakiejkolwiek pomocy innym zawodnikom (np. poprzez udostępnianie kodów źródłowych rozwiązań).
- Każde rozwiązanie zgłoszone do oceny uruchamiane jest dla kilku testów. Wynik każdego testu jest zaakceptowany albo odrzucony. Test zostaje zaakceptowany gdy zgłoszone rozwiązanie działa w wyznaczonych limitach czasowych i pamięciowych oraz wypisuje poprawne odpowiedzi zgodnie ze specyfikacją podaną w treści zadania. Rozwiązanie zostaje zaakceptowane gdy zaakceptowane zostaną wyniki wszystkich testów, dla których zostało uruchomione. Jeżeli rozwiązanie nie zostanie zaakceptowane zawodnik otrzyma jeden z poniższych komunikatów określający przyczynę:
- Błąd kompilacji (CE)
- Błąd wykonania (RE)
- Przekroczono limit czasu (TLE)
- Błędna odpowiedź (WA)
- O wyniku każdego zgłoszonego rozwiązania zawodnicy dowiadują się bezpośrednio po jego wysłaniu.
- Zawodnik otrzymuje za każde rozwiązane zadanie 1 punkt.
- Za każde błędne zgłoszenie do zadania wysłane przed zgłoszeniem zaakceptowanym uczestnik otrzymuje 20 minut karnych, które są doliczane do jego sumarycznego czasu rozwiązania wszystkich zadań.
- Ranking zawodników ustalany jest na podstawie ilości zdobytych punktów (im więcej punktów tym wyższa pozycja). W przypadku gdy dwóch albo większa liczba zawodników ma tyle samo punktów pod uwagę brany jest sumaryczny czas rozwiązania zaakceptowanych zadań (im mniejszy czas tym wyższa pozycja).
- Szczegóły techniczne:
- Każde rozwiązanie zadania musi składać się z pojedynczego pliku zawierającego kod źródłowy w jednym z języków programowania dostępnych w systemie SPOJ.
- Limity czasowe zostały ustalone na bazie rozwiązań wzorcowych napisanych w językach C/C++. Organizatorzy nie gwarantują, że ustalone limity czasowe będą wystarczające dla wszystkich dostępnych języków programowania.
- W językach C/C++ i pochodnych zabronione jest używanie tzw. szybkiego wejścia/wyjścia, czyli własnoręcznie napisanych funkcji wczytujących dane szybciej niż scanf/printf oraz cin/cout. Ma to na celu wykluczenie sytuacji, w których zaakceptowane zostają rozwiązania o słabszej złożoności obliczeniowej niż rozwiązanie wzorcowe.
- Lista kompilatorów oraz interpreterów jakie będę używane podczas zawodów dostępna jest w systemie SPOJ pod adresem http://www.spoj.pl/ranks/languages/
- Skompilowane programy nie mogą
- Odczytywać lub zapisywać danych z plików/strumieni innych niż standardowe wejście/wyjście.
- Tworzyć procesów potomnych ani wątków.
- Limity czasowe są jawne i zostaną określone w treści zadań.
- Domyślny limit pamięci dla wszystkich zadań wynosi 1536MB. W przypadku gdy limit pamięci różni się od domyślnego zostanie to jawnie określone w treści zadania.
- Kod źródłowy programu nie może być większy niż 50000B.
- Programy powinny wczytywać dane ze standardowego wejścia i wypisywać wyniki na standardowe wyjście.
- Dane wczytywane są zawsze poprawne, czyli zgodne ze specyfikacją wejścia podaną w treści każdego z zadań.
- Inne:
- Ewentualne spory dotyczące oceny rozwiązań rozstrzygają koordynatorzy AlgoLigi, ich ustalenia są ostateczne i nie podlegają apelacji.
- Organizatorzy zastrzegają sobie prawo dokonania ponownej kompilacji i oceny rozwiązania zadania przesłanego wcześniej.
- Organizatorzy zastrzegają sobie możliwość zmiany regulaminu.
- Uczestnicy nieprzestrzegający regulaminu mogą zostać zdyskwalifikowani.
- Zespół koordynatorów AlgoLigi składa się z następujących osób:
- Adam Bąk
- Mieczysław Bejnar
- Maciej Boniecki
- Witold Długosz
- Marcin Kasprowicz
- Piotr Kąkol
- Mariusz Śliwiński