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.