Regulament

Argument

Orice societate informatizată are nevoie de tot mai mulţi specialişti în domeniul informaticii şi al tehnologiei informaţiei. Tinerii din România şi Europa de Sud-Est s-au dovedit competitivi în aceste domenii, atât în ţară, cât şi în străinătate, prin rezultatele obţinute la competiţii internaţionale, prin proiectele de cercetare sustinute în universităti, prin produsele dezvoltate la firmele la care lucrează.

România şi ţările din zona Europei de Sud Est pot deveni unele dintre principalele ţări producătoare şi exportatoare de software şi în acest sens, pregătirea de performanţă a elevilor în domeniul informaticii devine o necesitate imperioasa. Această pregătire trebuie dublată de stimularea spiritului competitiv, dar şi de formarea abilităţilor de a iniţia şi dezvolta o afacere proprie în domeniul IT.

Obiective

Scopul principal al acestui proiect este de a oferi tuturor elevilor şanse egale de a participa la o pregătire de performanţă în domeniul ştiintei informaticii şi de a stimula pasiunea elevilor pentru informatică.

Obiectivele derivate sunt:

  • dezvoltarea gândirii algoritmice
  • dezvoltarea abilităţilor de programare
  • dezvoltarea spiritului competitiv.

Grupe de pregătire

Elevii sunt împărţiţi în 3 grupe de pregătire, în concordanţă cu nivelul/vârsta lor.

Grupa S (Small) - începători în informatică, primul an în domeniul programării; vârsta nu trebuie să depăşească 16 ani (clasa a IX-a sau elevi de gimnaziu);

Grupa M (Medium) - nivel intermediar, un an sau doi ani experienţă în domeniul programării; vârsta nu trebuie să depăşească 17 ani (clasa a X-a)

Grupa L (Large) - avansaţi în programare (clasele XI-XII).

Un elev poate participa la pregătire la grupa la care se încadrează sau la orice altă grupă superioară.

Înregistrare

Programul de pregătire se desfăsoară pe Internet şi se bazează pe site-ul http://campion.edu.ro.

Pentru a participa, orice elev trebuie să se înscrie pe site. Atunci când completează formularul de înscriere, elevul trebuie să furnizeze informaţii corecte şi complete şi să respecte grupa de pregătire.

După înscriere, fiecare elev va avea un nume de utilizator şi o parolă (pe care le va utiliza pentru a intra pe site), precum şi un ID (număr de identificare), care va fi utilizat de sistemul de evaluare.

Runde de pregătire

Pregătirea se desfăşoară în runde, runde de pregătire şi runde de concurs, alternativ.

Într-o rundă un elev va primi spre rezolvare 2 probleme. O rundă de pregătire durează de regulă 10 zile.

O rundă de concurs va dura 3 ore, sâmbăta de la 9 la 12.

Începutul şi sfârşitul fiecărei runde va fi publicat din timp pe site.

Întrebări

În timp de 3 zile de la începutul unei runde de pregătire sau 1 oră de la începutul unei runde de concurs, elevii pot adresa prin e-mail întrebări profesorului care a propus problema. Răspunsurile primite pot fi YES, NO sau NO COMMENT.

Dacă sunt necesare clarificări suplimentare, pe site va fi publicat un anunţ general.

Trimiterea soluţiilor

Pentru a trimite soluţiile elevul trebuie să se autentifice pe site, utilizând numele de utilizator şi parola. Apoi trebuie să trimită soluţiile (fişiere sursă) completând formularul de trimitere a soluţiilor. Sunt acceptate doar soluţiile trimise până la sfârşitul rundei. Dimensiunea maxima a unei surse care poate fi trimisa prin intermediul site-ului este de 65536 octeti (64 KB).

Un elev poate să trimită mai multe soluţii pentru o problemă, dar numai ultima soluţie trimisă va fi luată în considerare la evaluare.

Evaluarea

Atunci când se trimite o soluţie, aceasta va fi compilată pe serverul de evaluare, apoi va fi rulată pe cel putin unul dintre exemplele din enunţul problemei. În secţiunea Evaluare online puteţi vizualiza rezultatele evaluării (pe exemplu). Modalitatea de postare a rezultatelor rămâne aceeaşi: rezultatele evaluării pe testele "reale" sunt postate după încheierea rundei (atunci puteţi consulta borederoul vostru personal de evaluare, precum si clasamentelele - pentru runda curenta şi general).

Configuratia hard a serverului de evaluare este:

  • CPU AMD Sempron 2200 1,5Ghz
  • DDR 512Mb

Configuratia soft:

  • RedHat 9.0
  • gcc 3.2.2
  • fpc 2.0.2

Sistemul de evaluare a fost elaborat de Mihai Pătraşcu, fost medaliat la competiţiile internaţionale, la ora actuală student la MIT. Evaluatorul este utilizat la olimpiadele naţionale de informatică, la pregătirea lotului naţional de informatică. De asemenea, acest evaluator a fost utilizat cu succes la Balcanida de Informatică, Iaşi, 2003.

După evaluare, punctajele vor fi publicate pe site. După ce elevul intră pe site, poate consulta propriul borderou de evaluare, în care sunt detaliate punctajele obţinute pe fiecare test, pentru fiecare problemă, cu mesaje explicative.

Soluţii

După evaluare vor apărea pe site soluţii ale problemelor, precum şi testele utilizate la evaluare.

Contestaţii

După publicarea rezultatelor evaluării, elevii pot testa propriile programe pe seturile de date de test publicate pe site.

Dacă rezultatele din borderoul de evaluare nu coincid cu cele obţinute de elev la testare sau consideră că unele seturi de date de test nu respectă restricţiile problemei, elevul poate trimite o contestaţie profesorului care a propus problema, precum şi la adresa emanuela.cerchez@gmail.com.

În contestaţie, elevul trebuie să specifice numele său, ID-ul numeric, grupa de pregătire, problema, precum şi motivul contestaţiei.

Fiecare contestaţie va fi analizată şi fiecare elev va primi prin e-mail un răspuns.

Dacă se acceptă contestaţia, pe site va apărea punctajul modificat pentru elevul care a depus contestaţia şi, în cazul în care testele de evaluare sau verificatorul a fost modificat) pentru toţi elevii din grupa respectivă.

Va fi publicat pe site şi un anunţ general în acest sens.

Mediul de programare

Sistem de operare: Red Hat Linux 9

Compilatoare: Free Pascal 1.0.6., GNU C şi C++ Compiler 3.2.2

Comenzile de compilare:

  • Pascal: fpc -Xs program.pas
  • C: gcc -lm -Wall -O2 -static -o filename
  • C++: g++ -lm -Wall -O2 -static -o filename

Concursul final

Scopul principal al acestui program este pregătirea.

Totuşi, se va organiza o ultimă rundă de concurs, care va oferi elevilor posibilitatea de a se cunoaşte, de a concura în condiţii reale, de a fi premiaţi şi de a le fi recunoscută valoarea.

Runda finală va fi organizată în România, la o dată ce va fi anunţată la sfârşitul programului de pregătire.

La runda finală pot participa:

  • 4 elevi din fiecare ţară din Balcani implicată în programul de pregătire, împreună cu profesorii lor care au participat la pregătire pe site.
  • din România, primii 10 elevi clasaţi la fiecare grupă de pregătire, împreună cu profesorii care au asigurat pregătirea pe site.

Dezaprobăm categoric orice tentativă de fraudă, prin urmare înainte de a anunţa finaliştii vom verifica compatibilitatea elevilor cu grupa de pregătire şi vom analiza soluţiile lor.

Premii

Pentru fiecare grupă de pregătire se va acorda premiul I, premiul al II-lea şi premiul al III-lea, în funcţie de rezultatele obţinute la concursul final.

Menţiuni speciale

1. Deoarece evaluarea se va realiza sub Linux, trebuie să fiţi deosebit de atenţi la numele fişierelor (Linux este case-sensitive!). Convenţia generală este: numele tuturor fişierelor care intervin în problemă se vor scrie cu litere mici.

2. Evaluatorul testează dacă programul nu returnează un cod de eroare. Programatorii C şi C++ trebuie să fie atenţi ca tipul funcţiei main() să fie int şi la sfârşit să returneze valoarea 0 (return 0;).

3. Pentru fiecare problemă poate fi specificată o limită de memorie. Implicit, memoria totală disponibilă este 16 Mb, din care 1 Mb este memoria pentru stivă.

Memoria pentru stivă este utilizată de funcţii pentru a memora valorile variabilelor locale, ale parametrilor, rezultatul şi adresa de revenire.

De exemplu, dacă limita de memorie pentru stivă este 1 Mb, un program care conţine funcţia:

void f(int a)
{
 int x[300000];
 ...
}

nu va funcţiona deoarece tabloul x ocupă 300000*4 bytes, iar parametrul a necesită alţi 4 bytes, deci limita de memorie pentru stivă a fost depăşită.

Memoria totală disponibilă reprezintă memoria utilizată de program pentru datele statice (de exemplu, variabilele globale), memoria pentru stivă, memoria pentru variabilele dinamice, precum şi memoria utilizată de program pentru a memora propriul cod.

Dacă limita de memorie este depăşită, în borderoul individual de evaluare al elevului va apărea mesajul "Killed by signal 11", ceea ce corespunde erorii "Segmentation fault".

4. Pentru fiecare problemă este specificat un timp maxim de execuţie. Acest timp este specificat pentru evaluarea sub Linux pe un calculator AMD Athlon 1.8 GHz, 256 MB RAM.

5. Pentru începătorii în programare, poate că este util un exemplu de utilizare a fişierelor pentru citirea/scrierea unui număr întreg.

Limbajul C:

#include <stdio.h>
...
/* declară şi deschide fişierul de intrare */
FILE * fin=fopen("input_file_name", "r");
/* citeste un intreg în variabila n */
fscanf (fin, "%d", &n);
/* inchide fişierul de intrare */
fclose(fin);
...
/* declară şi deschide fişierul de ieşire */
FILE * fout=fopen("output_file_name", "w");
/* scrie o linie care conţine valoarea variabilei n */
fprintf (fout, "%d\n", &n);
/* inchide fişierul de iesire */
fclose(fout);

Limbajul C++:

#include <fstream.h>
...
/* declară şi deschide fişierul de intrare */
ifstream fin("input_file_name");
/* citeste un intreg în variabila n */
fin >> n;
/* închide fişierul de intrare */
fin.close();
...
/* declara şi deschide fişierul de iesire */
ofstream fout("output_file_name");
/* scrie o linie care conţine valoarea variabilei n */
fout<<n<<'\n';
/* închide fişierul de iesire */
fout.close();

Limbajul Pascal:

{declară fisierele de intrare şi de iesire}
fin, fout: text;
...
{asignează variabila fin fişierului de intrare}
assign(fin,'input_file_name');
{deschide fişierul de intrare }
reset(fin);
{ citeşte un întreg în variabila n }
read(fin,n);
{ închide fişierul de intrare }
close(fin);
...
{asignează variabila fout fişierului de iesire}
assign(fout,'output_file_name');
{deschide fişierul de iesire }
rewrite(fout);
{ scrie o linie care conţine valoarea variabilei n }
writeln(fout, n);
{ închide fişierul de iesire }
close(fout);

6. Este recomandat să instalaţi pe calculatorul vostru aceleaşi versiuni pentru compilatoare ca şi cele specificate în regulament, deoarece există diferenţe între versiuni. Fiţi deosebit de atenţi la fişierele header pe care le utilizaţi.

7. În mesajele e-mail trimise de elevi profesorilor (întrebări sau contestaţii) trebuie să specificaţi clar numele, ID-ul numeric şi trebuie să utilizaţi un limbaj politicos. În caz contrar, mesajele vor fi ignorate, iar elevul va fi descalificat.

8. În programele C++ nu folosiţi endl. Afisati în loc un caracter newline ('\n').

© 2002 - 2012. Realizat de Liviu Vâlsan. Administrat de Vlad Manea   XHTML   CSS