Tutorial infoarena

Cum rezolv probleme?

Alege o problema

In arhiva de probleme gasesti o serie impresionanta de probleme (peste 1100) adunate in cei optsprezece ani de functionare a site-ului. Daca vrei sa incepi cu ceva mai usor poti incerca arhiva educationala unde gasesti probleme clasice cu tot cu sugestii de rezolvare.

Odata ce ai ajuns intr-una din arhive poti alege o problema facand click pe ea. In momentul acesta poti citi problema si suntem siguri ca deja ai idei despre cum se rezolva :) Cand una din ideile tale s-a concretizat intr-o sursa scrisa

Pentru a trimite o sursa trebuie sa fii autentificat. Daca nu ai inca un cont infoarena fa bine si te inregistreaza ca merita :).

Odata autentificat acceseaza Trimite solutii din menu-ul din stanga. Vei avea de completat urmatoarele informatii:

  • problema pentru care vrei sa trimiti solutia (da click pe lista corespunzatoare si apoi tasteaza numele problemei)
  • fisierul sursa (vei indica unde se gaseste sursa pe calculatorul tau)
  • compilatorul pe care il vrei (in mod normal, acesta se completeaza automat daca este recunoscuta extensia sursei)

Aceiasi pasi poti sa-i faci si daca ai deschis o problema folosind campurile din josul paginii. Ai ghicit, sursa trebuie sa fie pentru problema care e deschisa ;)

Acum gata poti apasa butonul Trimite solutia si astepta mesajul de confirmare. Hai apasa ca nu explodeaza! :)

Ce punctaj ai luat?

Pentru a afla ce punctaj a acumulat solutia ta, mergi in monitorul de evaluare.

Felicitari, ai trimis prima ta sursa pe infoarena! Sper ca ai luat 100!

Probleme interactive

Ai observat până acum că majoritatea problemor de pe infoarena îţi cer să citeşti toate datele de intrare dintr-un fişier, să le prelucrezi cumva printr-un algoritm şi să afişezi apoi un rezultat într-un fişier de ieşire. Problemele interactive sunt un pic diferite: programul tău va rula în paralel cu un program al autorului şi cele două programe vor comunica între ele. Programul tău nu va mai citi dintr-un fişier de intrare, ci de la tastatura şi nu va mai scrie într-un fişier, ci la ecran. De asemenea, programul tău va trebui să forţeze golirea buffer-ului standard output după fiecare afişare pentru ca programul autorului să poată citi ce ai scris tu. Tot ce trebuie să faci tu este ca după fiecare comandă de afişare din cod să scrii o linie cu fflush(stdout), cout.flush() sau flush(output) în funcţie de limbajul de programare preferat. Exemple:

CC++Pascal
printf("%d\n", N);
fflush(stdout);
cout << N << "\n";
cout.flush();
writeln(N);
flush(output);

Dacă vrei să-ţi testezi programul scris pentru o problemă interactivă pe un test mai mare (pe care nu l-ai putea testa de mână), va trebui să scrii un al doilea program care va interacţiona cu primul ca şi cum ar fi programul autorului problemei. Dacă foloseşti sistemul de operare Linux sau Mac OS X, poţi folosi programul connect furnizat de echipa infoarena pentru a rula cele două programe în paralel. Îl poţi compila folosind comanda gcc -Wall -O2 -o connect connect.c şi îţi poţi testa sursa rulând ./connect <program 1> <program 2>. Ce afişează la ecran primul program va fi citit de la tastatura în al doilea program şi vice-versa. Ţine minte să goleşti buffer-ul standard output în ambele programe.

Articole infoarena

N-ai avut noroc? Simti ca poti mai mult si ai vrea sa inveti?

infoarena are ca scop primar excelenta in informatica, nu evaluam numai surse :). Avem o serie de articole despre Algoritmi, Structuri de date, Geometrie analitica, Limbaje de programare si chiar Matematica. De asemenea, pentru multe din problemele din arhiva, mai exact cele din concursurile organizate infoarena, poti gasi idei de rezolvare in articolul cu solutii asociat concursului.

Daca stii prea multe si simti nevoia sa ne demonstrezi si noua acest lucru sau daca pur si simplu vrei sa lasi ceva in urma ta pe pamant te incurajam sa scrii articole noi si sa le imbunatatesti pe cele existente.

Alte resurse

Din nou o sa te batem la cap cu comunitatea: daca vrei sa discuti despre o anumita problema sau alte lucruri care despre informatica si programare acceseaza forumul infoarena.

infoarena iti pune la dispozitie o multitudine de download-uri la sectiunea Downloads. Acolo poti gasi problemele si testele la cateva concursuri importante, articole si utilitare.

Mai poti gasi o multime de link-uri catre site-uri interesante in sectiunea Links.