Regulamin Mistrzostw


Ustalenia techniczne

  1. Polecenia używane do kompilacji rozwiązań (np. zadania a):
    • Dla c: gcc -O2 -static a.c -lm -std=c99
    • Dla cpp: g++ -O2 -static a.cpp -lm -std=c++11
  2. Do kompilowania rozwiązań używany będą kompilatory z GCC 11.2.0.
  3. Skompilowane programy będą uruchamiane w 64-bitowym systemie Linux.
  4. W rozwiązaniach zabronione jest używanie wstawek asemblerowych.
  5. Ograniczenia:
    • kod źródłowy rozwiązania nie może przekraczać 100 KB, a kod wykonywalny 5 MB,
    • czas kompilacji rozwiązania nie może przekraczać 60 s, zaś użycie pamięci podczas kompilacji nie może przekroczyć 512 MB,
    • wielkość pamięci operacyjnej dostępnej programom będzie podana w treściach zadań; dotyczy ona sumarycznego zapotrzebowania na pamięć, a więc zawiera m.in. rozmiar kodu wykonywalnego, stosu, sterty itp.,
    • limity czasowe związane z poszczególnymi zadaniami mogą być lub nie być ujawniane w trakcie zawodów.
  6. Rozwiązania powinny:
    • składać się z jednego pliku źródłowego,
    • czytać dane ze standardowego wejścia, zapisywać wynik na standardowe wyjście,
    • kończyć działanie kodem wyjścia 0 (inne kody wyjścia uznawane są za błąd wykonania).
  7. Rozwiązania nie mogą:
    • otwierać jakichkolwiek plików,
    • tworzyć nowych procesów,
    • korzystać z funkcji sieciowych,
    • korzystać z zewnętrznych bibliotek,
    • uruchamiać innych programów.
  8. Ograniczenia czasu i ilości dostępnej pamięci są przypisane do zadań, tj. będą takie same w trakcie wszystkich uruchomień rozwiązań danego zadania.
  9. Jeżeli rozwiązanie nie zostanie zaakceptowane, drużyna otrzyma komunikat o błędzie dotyczącym pierwszego uruchomienia, w którym rozwiązanie nie zadziałało poprawnie.
  10. Komputery zawodnicze będą wyposażone w system operacyjny Debian Stable z co najmniej następującym oprogramowaniem:
    • kompilatory: gcc/g++ (wersja 11.2.0),
    • edytory: mcedit, vi/vim/gwim, emacs, gedit, nano, codeblocks, geany
    • inne: python3, bc, gdb, man, mc,
    • dokumentację biblioteki standardowej.

Informacje ogólne

  1. Zawody odbędą się trybie stacjonarnym w Instytucie Informatyki Uniwersytetu Wrocławskiego (ul. Joliot-Curie 15).
  2. W zawodach biorą udział zespoły (drużyny), składające się maksymalnie z trzech osób – uczniów jednej szkoły ponadpodstawowej w Polsce.
  3. Każda drużyna ma dyspozycji jeden komputer.
  4. Uczestnicy mogą korzystać z własnych materiałów: słowników, książek, wydruków programów, notatek. Nie jest dozwolone korzystanie z tekstów zapisanych w formie elektronicznej (np. pamięć USB, CD/DVD), z kalkulatorów ani innych przenośnych urządzeń elektronicznych, takich jak telefon komórkowy, notebook itp.
  5. Podczas Mistrzostw obowiązują zasady fair-play. Nie będziemy ich tu definiować, ale w szczególności zabronione jest:
    • korzystanie przez drużyny z pomocy osób trzecich,
    • kontaktowanie się z innymi drużynami podczas trwania zawodów,
    • używanie własnych urządzeń elektronicznych,
    • wnoszenie na teren zawodów nośników pamięci (np. pendrive’ów),
    • próby przeciążania systemu (np. nieracjonalnie dużą liczbą zgłoszeń),
    • wszelkie działanie mające na celu utrudnienie startu innym drużynom bądź zakłócenie przebiegu zawodów,
    • ...

Uczestnictwo w zawodach

  1. Rejestracja drużyn.
    • Aby wziąć udział w Mistrzostwach trzeba zarejestrować drużynę w systemie.
    • Drużyny, które startowały w turniejach organizowanych w ramach projektu Mistrzostwa w Algorytmice i Programowaniu lub w poprzednich edycjach również muszą się zarejestrować.
    • Rejestracja drużyn rozpocznie się 6 czerwca i trwać będzie do 15 czerwca do godziny 18.00.
  2. Uwierzytelnienie drużyn.
    • W oficjalnej rywalizacji Mistrzostw mogą wziąć udział jedynie drużyny uwierzytelnione, tj. takie, których dane zostały potwierdzone przez nauczycieli bądź dyrekcje szkół. Drużyny nieuwierzytelnione mogą wziąć udział w rywalizacji nieoficjalnej.
    • Nauczyciele biorący udział w projekcie Mistrzostwa w Algorytmice i Programowaniu otrzymali informację o procedurze uwierzytelnienia drużyn.
    • Drużyny z innych szkół powinny zwrócić się do swoich nauczycieli (bądź dyrekcji szkół), by Ci przesłali na adres mistrzostwamap@cs.uni.wroc.pl następujące informacje o każdej z drużyn:
      • Nazwa drużyny
      • Imiona i nazwiska członków drużyny (oraz przy każdym zawodniku informację, do której klasy uczęszczał w roku szkolnym 2021/2022)
      Ponadto informacja powinna zawierać: nazwę szkoły, imię i nazwisko osoby autoryzującej (nauczyciela lub dyrektora) i kontaktowy numer telefoniczny do tej osoby. W przypadkach, w których powyższa procedura okaże się być niemożliwa do przeprowadzenia, drużyny mogą wysłać maila ze stosownymi informacjami na powyższy adres mailowy. Organizatorzy spróbują innych procedur autoryzacji, choć nie mogą gwarantować ich pomyślnego skutku.
  3. Kwalifikacja drużyn.
    • Ze względu na ograniczenia organizacyjne do oficjalnej rywalizacji Mistrzostw zostanie zakwalifikowanych co najwyżej 60 drużyn, spośród tych, które zarejestrują się w systemie i zostaną autoryzowane.
    • Organizatorzy gwarantują zakwalifikowanie co najmniej jednej drużyny z każdej szkoły biorącej udział w projekcie MAP.
  4. Przebieg zawodów

    1. Zawody trwają dwa dni.
      • W pierwszym dniu odbędzie się sesja próbna, w czasie której uczestnicy będą mogli zapoznać się ze środowiskiem programistycznym (sieć komputerowa, kompilator, tryb oceniania, itp.).
      • Właściwe zawody odbędą się w drugim dniu i trwają 5 godzin. W przypadku wystąpienia nieprzewidzianych trudności organizatorzy w porozumieniuz jury zawodów mają prawo przedłużyć czas rozwiązywania zadań.
    2. Do rozwiązania będzie 15 zadań, których treść będzie odkrywana przed zawodnikami w trakcie zawodów według następującego harmonogramu:
      • w momencie rozpoczęcia zawodów odkrytych zostanie 7 zadań.
      • w czasie trwania zawodów będą odkrywane kolejne zadania:
        • po upływie pierwszej godziny – 4 zadania,
        • po upływie drugiej godziny – 2 zadania,
        • po upływie trzeciej godziny – 2 zadania.
      Zamierzeniem organizatorów jest, by w każdej turze wśród odkrywanych zadań znajdowały się zadania o różnym stopniu trudności (także zadania nieskomplikowane).
    3. Każde zadanie można rozwiązywać do końca zawodów, niezależnie czasu jego odkrycia.
    4. System konkursowy umożliwia kontakt z organizatorami w celu zadania pytań. Należy mieć na uwadze, że ze względu na specyfikę zawodów, odpowiedzi mogą nadchodzić z opóźnieniem. W systemie mogą też pojawiać się ogłoszenia publiczne. Zalecane jest przeglądanie ogłoszeń, gdyż mogą one zawierać ważne informacje organizacyjne lub dotyczące treści zadań lub wyników.
    5. Podczas zawodów widoczne będą pełne wyniki zgłoszeń na zbiorze wszystkich testów. Należy mieć na uwadze ewentualne opóźnienia w ocenie przy dużym obciążeniu systemu.
    6. Jury zawodów może zdyskwalifikować drużyny, które próbują złamać zabezpieczenia systemu konkursowego lub utrudnić przebieg zawodów.

    Ocena rozwiązań

    1. Rozwiązaniem każdego zadania jest program komputerowy napisany w języku C lub C++.
    2. Każde rozwiązanie przesłane do oceny jest sprawdzane przez system sprawdzający na zestawie testów (w tym na testach niejawnych, nie podanych w treści zadania). Wynikiem sprawdzenia jest zaakceptowanie albo odrzucenie rozwiązania.
    3. Rozwiązanie zostanie zaakceptowane tylko wtedy, gdy dla wszystkich testów udzieli poprawnej odpowiedzi i poprawnie zakończy swoje wykonanie.
    4. W treści każdego zadania znajduje się informacja o limicie pamięci (taki sam dla wszystkich testów) oraz limicie czasu na test. Limit czasu podany w treści zadania dotyczy maksymalnych testów. Limit czasu w pozostałych testach może być mniejszy. Organizatorzy pozostawiają sobie definiowanie pojęcia maksymalnych testów. Przekroczenie tych ograniczeń skutkuje odrzuceniem rozwiązania.
    5. Do przeprowadzenia oceny rozwiązań używane będą dane wejściowe, których format jest opisany w treściach zadań.
    6. Drużyny są szeregowane na podstawie liczby zaakceptowanych zadań. O kolejności drużyn posiadających tę samą liczbę zaakceptowanych zadań decyduje mniejsza kara czasowa. Kara czasowa naliczana jest jedynie za zaakceptowane zadanie i jest równa liczbie minut, które upłynęły od odkrycia zadania do jego zaakceptowania, powiększoną o 20 minut za każde wcześniejsze niezaakceptowane zgłoszenie drużyny do tego zadania. Kara czasowa drużyny to suma kar naliczonych za wszystkie zaakceptowane zadania.
    7. Rozwiązania niekompilujące się (komunikat Błąd kompilacji) i rozwiązania nadesłane do już zaakceptowanego zadania nie powodują naliczenia 20-minutowej kary czasowej.
    8. W trakcie zawodów, przez pierwsze cztery godziny trwania sesji, do publicznej wiadomości są na bieżąco podawane aktualne wyniki drużyn. Przez ostatnią godzinę informacje o wynikach sprawdzania rozwiązań swojej drużyny otrzymują tylko zawodnicy.

    Klasyfikacje

    Drużyny startujące w oficjalnej rywalizacji będą sklasyfikowane w następujących (coraz węższych) kategoriach:
    • Kategoria ogólna – obejmująca wszystkie drużyny,
    • Kategoria II klas – obejmująca drużyny, w których składach nie ma żadnego maturzysty,
    • Kategoria I klas – obejmująca drużyny składające się wyłącznie z uczniów klas pierwszych.
    Ponadto zostanie podana klasyfikacja "open" obejmująca wszystkie nieautoryzowane drużyny.

    Uwagi końcowe

    Kwestie nie objęte Regulaminem rozstrzyga jury zawodów. Decyzje jury są ostateczne i nie podlegają reklamacji.