Komunikaty serwera

Gdy wyślemy plik z kodem, po kilku sekundach zostanie on skompilowany na serwerze i poddany testom. Każdy test to jeden plik z danymi wejściowymi. Żeby program mógł przejść test z sukcesem, musi wypisać dokładnie to samo, co program wzorcowy napisany przez autorów zadania. Zazwyczaj pod treścią znajdują się tzw. testy przykładowe. Składają się z dwóch rzeczy – pola Input (wejścia programu) i pola Output (odpowiedzi). Zanim wyślesz kod na sprawdzarkę koniecznie przetestuj, czy twój program zwraca (wypisuje na ekran) dokładnie to, co powinien na każdym teście przykładowym. Spróbuj również wymyślić kilka swoich, by mieć pewność, że program na pewno działa poprawnie.

Po zakończeniu sprawdzania, serwer zwraca jeden z poniższych komunikatów:

Compilation error (Błąd kompilacji) — kod nie kompiluje się. Możliwe są trzy scenariusze: masz drobny błąd w kodzie, musisz przekompilować u siebie i poprawić go, wysłałeś zły plik (wysyłamy plik .cpp z kodem źródłowym) lub wybrałeś zły kompilator (dla języka C++ wybierz GNU G++11 lub 14). Czasem (bardzo rzadko) zdarza się, że kod kompiluje się u nas lokalnie a na serwerze już nie. Warto wtedy sprawdzić podany komunikat błędu (np. na Codeforces jest dostępny po kliknięciu na “Compilation error”). Jeśli dalej nie wiesz, co jest przyczyną błędu, napisz na forum.

Wrong answer on test X (Zła odpowiedź na teście #X) — twój program zwraca zły wynik na teście X, tzn. że po wpisaniu danych wejściowych twój program podał złą odpowiedź (niepoprawną liczbę, niepoprawne słowo lub dodatkowe, niepotrzebne znaki). Pamiętaj: dla wejścia podanego w treści zadania w polu Input twój program musi wypisać na ekran dokładnie to, co znajduje się w polu Output! Nie wypisujemy żadnych dodatkowych tekstów typu “Podaj liczbę:”, “Oto wynik:” itp.

Time limit exceeded on test X (Przekroczony limit czasu na teście #X) — kod działa za wolno. Program musi kończyć się na każdym teście po najwyżej kilku sekundach (konkretne limity podane są w opisie zadania). Spróbuj przetestować go na największych możliwych danych wejściowych (dla największych liczb, jakie mogą zostać podane, każda liczba ma swoje “widełki”, które możesz znaleźć w treści zadania).

Runtime error on test #X (Błąd wykonania na teście #X) — twój program nie kończy się poprawnie, “crashuje się” w trakcie działania (np. z powodu wyjścia poza tablicę, podzielenia przez zero itp.). Spróbuj przetestować swój kod na “brzegowych przypadkach”, np. ciągu o długości 1 (jeśli w zadaniu wczytujesz ciąg liczb), najmniejszych i największych limitach dla każdej ze zmiennej.

Memory limit exceeded #X (Przekroczony limit pamięci #X) — twój program zużywa za dużo pamięci. Upewnij się, że tworzysz tablice o dozwolonych rozmiarach. Łączna ich długość nie powinna przekraczać limitu podanego w treści zadania, dla przykładu: jeśli tworzysz 5 tablic typu int o długości milion zużywasz 5 milionów * 4 bajty = 20 megabajtów. Błąd ten może powodować też nieskończona rekurencja – jeśli limit pamięci jest dość niski, szybciej skończy się pamięć niż czas.

Presentation error on test #X (Błąd formatowania na teście #X) — zdarza się tylko w starszych wersjach sprawdzarek, przez nowsze ten błąd jest ignorowany. Oznacza, że twój output nie jest poprawnie sformatowany: zawiera niepoprawnie wstawione spacje lub puste linie.

Accepted — brawo. Rozwiązałeś zadanie 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*