FAQ czyli najczęściej zadawane pytania

FAQ czyli najczęściej zadawane pytania

Kiedy mogę zapisać się do Ligi?

Do Ligi można zapisać się w dowolnym czasie, nawet po jej rozpoczęciu. Jednak im później się zapiszemy tym mniejsze szanse są na wygraną, gdyż nie możemy już przysyłać rozwiązań zadań jakie były na wcześniejszych terminach. Dlatego najlepiej zapisać się jak najwcześniej i rozpocząć rozwiązywanie zadań począwszy od pierwszego terminu.

Jak odczytać dane ze standardowego wejścia i zapisać wyniki na standardowe wyjście?

Odczytujemy tak jakby dane były wpisywane z klawiatury a zapisujemy tak jakbyśmy wyświetlali na ekranie monitora.

Jak poradzić sobie z testowaniem programu, gdyż uciążliwe jest każdorazowe wpisywanie danych z klawiatury?

Najlepiej dane zapisać do pliku w takim formacie jaki jest podany w specyfikacji wejściowej zadania. Następnie program wywoływać z wiersza poleceń i na standardowe wejście przekierować plik z danymi w następujacy sposób:

program.exe < dane_wejsciowe.txt

Do pliku można także przekierować standardowe wyjście (dane zostaną zapisane wtedy w pliku) wywołując program w następujący sposób:

program.exe < dane_wejsciowe.txt > dane_wyjsciowe.txt

Używam Borland Delphi i piszę aplikacje konsolowe, jeśli nie są użyte żadne dodatkowe biblioteki, to czy takie rozwiązanie mogę wysłać albo nie zostanie ono skompilowane na serwerze?

Można wysłać ale z rozwiązania należy usunąć dyrektywę kompilatora określającą aplikację konsolową oraz dołączony moduł SysUtils. Czyli z rozwiązania usuwamy następujące fragmenty:

{$APPTYPE CONSOLE}
uses SysUtils;

Czy zadania ewaluowane są jakimś szczegółowym kompilatorem diagnostycznym?

Wszystkie rozwiązania kompilowane są ogólnodostępnymi kompilatorami: gcc 3.3.5 (język C), g++ 3.3.5 (język C++), gpc bazującym na gcc 3.3.3 (język Pascal).

Czy w języku C można korzystać ze standardowych nagłówków jak np. stdio.h?

Oczywiście, jest to dozwolone. Można korzystać ze wszystkich bibliotek zdefiniowanych w standardzie ANSI.

Czy można stosować strumienie w C++?

Tak, jednak stosowanie ich nie jest zalecane gdyż działają wolniej niż standardowe funkcje takie jak scanf, printf.

Czy w zadaniach napisanych w języku C++ można używac typu string?

Tak.

Czy trzeba umieszczać komentarze w tekście źródłowym programu?

Nie, gdyż nikt nie analizuje tekstu programu. Nie jest ważny styl w jakim napisany jest program, tzn. czy ma komentarze, wcięcia, sensowne nazyw zmiennych, itp., tylko ważne jest aby wygenerował poprawny wynik w czasie nie przekraczającym dozwolonego.

Czy trzeba pisać programy z zabezpieczeniami czy też założyć, że dane są poprawne?

Wszystkie dane testowe są poprawne, tak więc nie trzeba tego sprawdzać. Sprawdzanie poprawności danych przy dużym ich rozmiarze opóźnia tylko działanie programu i w niektórych przypadkach może spowodować odrzucenie rozwiązania.

Jeżeli w zadaniu nie jest podana liczba zestawów danych wejściowych, czy można sobie założyć jakąś przykładową liczbę?

Nie można robić takiego założenia. Program powinien działać poprawnie dla dowolnej liczby zestawów danych wejściowych.

Jeżeli w zadaniu nie jest podana liczba zestawów danych wejściowych czy oznacza to, że w zadaniu należy wykorzystać struktury dynamiczne?

Struktury dynamiczne nie są tutaj konieczne, gdyż liczba zestawów danych wejściwych ma tylko wpływ na liczbę wyników jakie zostaną wygenerowane przez program, a wyników dla każdego zestawu danych nie trzeba przechowywać w pamięci, gdyż można je (a nawet jest to wskazane) od razu wysyłać na standardowe wyjście.

Czy czas działania programu ma wpływ na jego ocene, czy tylko na przyjecie lub odrzucenie go?

Dla każdego zadania ustalony jest maksymalny czas jego działania i program aby został przyjęty nie może działać dłużej. Jeżeli mieści się w podanym przedziale czasu to nie jest ważny czas jego działania. Niech przykładowo maksymalny czas wynosi 10 sekund; czy program będzie działał 3, 5 lub 8 sekund, to nie jest ważne gdyż w każdym z wymienionych przypadków zostanie zaakceptowany i otrzyma taką samą liczbę punktów.

Czy liczy się czas przysłania rozwiązania?

Nie, ważne tylko aby nie przekroczyć podanego terminu. Czy rozwiązanie zostanie przysłane pierwszego dnia czy ostatniego, otrzyma taką samą liczbę punktów. Jeżeli czas nadesłania rozwiązania miałby być uwzględniany, pojawi się stosowny komunikat na ten temat.

Czy są przyznawane punkty karne za błędne rozwiązania?

Nie.

Ile razy można przysłać rozwiązanie tego samego zadania?

Nie ma ograniczeń. Można przysyłać tak długo jak nie zostanie zaakceptowane, oczywiście nie wolno przekroczyć podanego terminu.

Czy otrzymam dodatkowe punkty jeżeli przyślę kilka rozwiązań tego samego zadania i każde zostanie zaakceptowane?

Nie, za każde zadanie przyznawane są tylko punkty jakie podane są w zadaniu. Tak więc nie ma sensu przysyłać kolejnych rozwiazań jeżeli zadanie zostało już zaakceptowane, gdyż nie otrzyma się już za nie żadnych dodatkowych punktów.

Czy plik z rozwiązaniem musi mieć taką samą nazwę jak nazwa zadania?

Nazwa pliku może być dowolna, podobnie jak jego rozszerzenie (patrz następne pytanie), gdyż nazwa zadania którego wysyłamy rozwiązanie wybierana jest w formularzu na stronie WWW przy jego wysyłaniu.

Czy plik z wysyłanym rozwiązaniem musi mieć jakieś konkretne rozszerzenie?

Plik może mieć dowolne rozszerzenie gdyż język programowania w jakim wysyłane jest rozwiązanie nie jest ustalany na podstawie rozszerzenia pliku, tylko wybierany jest w formularzu przy wysyłaniu rozwiązania.

13.5.2025 - 10:05:54