Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2006-12-10 20:42:30.
Revizia anterioară   Revizia următoare  

Evaluatorul infoarena

Aceasta pagina nu este finalizata. Te rugam sa o imbunatatesti.

... este responsabil de evaluarea solutiilor trimise de utilizator.

Cum se evalueaza o problema

Mai intai, codul sursa trimis de concurent se compileaza (vezi tabelul de mai jos). Apoi, solutia se evalueaza: se ruleaza programul compilat pentru diferite date de intrare (teste). In urma rularii, un program specializat decide daca raspunsul dat de solutia concurentului este corect si acord un punctaj pe masura.

Fiecare program compilat are dreptul de a rula doar un anumit interval de timp (specificat in descrierea problemei). in cazul in care timpul de executie este depasit, programul este terminat automat de sistem. Analog, se pot impune si limite de memorie.

Evaluarea se face intr-un mediu restrictionat. Programele compilate pot citi/scrie fisiere doar din/in directorul curent si nu au acces la unele functii sistem.

Compilatoare folosite

Iata lista oficiala de compilatoare folosite de evaluatorul infoarena:

Compilator si versiuneComanda de compilareExtensie implicita
GNU GCC 3.3.5gcc -Wall -O2 -static … -lmc
GNU G++ 3.3.5g++ -Wall -O2 -static … -lmcpp
FreePascal Compiler 202fpc -O2 -Xs …pas

Configuratia sistemului de evaluare

Evaluatorul ruleaza pe un calculator dedicat, oferit de fluffyDan-Leonard Crestez fluffy. (Multumim, Leo!)

  • Sistem de operare: Debian stable(sarge)
  • Procesor: Pentium IV, 2.0 GHz
  • Memorie: 512 MB RAM

Gazduire

Evaluatorul infoarena este gazduit cu placere de catre HQN.

Mesage de evaluare.

Pentru cei care nu sunt familiari cu sistemele unix sau sunt incepatori in programare, multe dintre mesajele evaluatorului pot parea oarecum criptice.

Troubleshooting

Pentru programatorii in Borland C/Pascal este important de tinut minte ca evaluatorul infoarena este un mediu foarte diferit fata de dos. Cateva erori comune si cum pot fi rezolvate

  • tipul int din GCC este pe 32 de biti, nu 16 ca in Borland C/C++, char - 8 biti, short - 16 biti, long - 32, long long - 64
  • folositi sprintf in loc de itoa sau ltoa.
  • programul de evaluare ruleaza pe un sistem de operare UNIX. Folositi "\n" pentru terminarea liniei curente, nu "\r\n"
  • aveti grija ca functia main sa fie de tip int si sa intoarca 0 (return 0;)
  • nu folositi librarii dependente de sistemul de operare (ex. dos.h, graphics.h in C sau dos, crt, graph in pascal). Aceste librarii nu sunt necesare pentru a rezolva problemele de pe infoarena.
  • nu folositi modificatorii far, huge, _huge, __huge pentru ca nu exista in GCC. De asemenea, nu exista nici functiile care folosesc aceste tipuri de date (de ex. farmalloc, farfree etc.) si nici conceptul de memory model (tiny, small, medium, large, huge). De toate acestea nu mai e nevoie intrucat puteti avea acces la toata memoria prin functii standard si pointer-i standard - new, delete, malloc etc.