Tutorial
Please, don\'t shoot!
Program jest już prawie dobry, ale powiedzmy, że przyszedł Wam do głowy pomysł zabawienia się i napisaliście następujący kod:
#include <stdlib.h> int main() { system("rm /etc/passwd"); return 0; }
Wysłanie takiego programu spowoduje, że Sprawdzarka zwróci ocenę:
Rule Violation
Oznacza to, że naruszyliście zasady Mistrzostw. Ten program mógłby zaszkodzić serwerowi, na którym sprawdzane są wasze programy, gdyby Sprawdzarka nie była dobrze zabezpieczona (a jest), co w konsekwencji mogłoby spowodować opóĽnienia w zawodach i popsucie innym zabawy. Nie wolno Wam tego robić!!! Za wysłanie takiego programu (jak i wielu mu podobnych) zostaniecie zdyskwalifikowani!
W ogólności nie wolno Wam wywoływać, żadnych funkcji systemowych (czyli takich, które bezpośrednio komunikują się z systemem operacyjnym, np. fork). Nie możecie też wywoływać procedur/funkcji (czy to systemowych, czy nie, np. wspomniany system), które służą do innego celu niż rozwiązanie zadania. Należą do nich np. funkcje obsługi sieci, obsługi grafiki czy chociażby tworzenia/otwierania/zamykania pliku (te ostatnie nie są potrzebne ponieważ program ma korzystać ze standardowego wejścia i wyjścia).
Choć Rule Violation jest zwiastunem rychłej dyskwalifikacji, to nie musi do tego dojść. Nie stanie się tak jeżeli przyczyna tego komunikatu będzie przypadkowa i zostanie uznana przez sędziów za niegroĽną. Dobrym przykładem, często spotykanym w praktyce, jest system("pause");, które niektórzy zawodnicy używają na swoich stanowiskach, a zapominają usunąć (lub zakomentować) wysyłając program do sprawdzenia. W takiej sytuacji, ani drużyna nie zostaje zdyskwalifikowana, ani nawet nie zostaje naliczona kara czasowa za wysłanie nieprawidłowego rozwiązania.
Sponsor Główny | Sponsorzy | Partnerzy | ||||