Despre site
- Site-ul de probleme este organizat de cercul de informatică Programare cu răbdare®.
- Pe lângă probleme, veți găsi aici mai multe resurse sub formă de articole și lecții video.
- Problemele propuse sunt prezentate gradual și au diferiți coeficienți asociați.
- Veți găsi probleme simple, dar sunt și probleme complexe, precum și probleme de concurs.
- Problemele mai complexe sunt de natură practică, utile în dezvoltarea de proiecte practice.
- Puteți propune probleme, dacă acestea sunt însoțite de TOATE datele necesare, precum și de teste.
- După ce propuneți o problemă, aceasta este supusă unei aprobări. În caz că ea este aprobată, va fi inclusă în baza de date.
- Există și un generator automat de probleme, care nu vor fi evaluate, dar pot fi folosite pentru antrenament.
- Generatorul poate fi folosit și de cadrele didactice, în activitatea lor.
Scor
- Scorul dumneavoastră este calculat în funcție de coeficientul asociat problemelor pe care le rezolvați și de punctajul obținut la fiecare problemă.
- Astfel, se înmulțește punctajul maxim obținut de dumneavoastră la fiecare problemă cu coeficientul său, apoi se adună toate aceste produse, pentru a obține scorul final.
- De exemplu, dacă la problema 0001 veți obține punctajele 8, 9 și 4, maximul va fi 9, care se va înmulți cu coeficientul asociat problemei 0001, care este 0.10. Se va obține 9 x 0.10=0.9 puncte.
- Dacă la problema 0004 (care are coeficientul 0.15) veți obține punctajul maxim 8, atunci veți obține aici 8 x 0.15=1.2 puncte.
- Dacă nu veți mai rezolva alte probleme, scorul dumneavoastră final va fi 0.9 + 1.2 = 2.1 puncte.
Reguli
- Cei care vin pe acest site, vin cu dorința de a învăța sau de a ajuta pe alții să învețe. Orice cont creat este supus unei aprobări/dezaprobări.
- Cine nu are activitate o perioadă îndelungată riscă să i se dezactiveze contul.
- Cine are un comportament nedemn de acest site riscă să i se șteargă contul.
- Toate programele vor fi compilate folosind colectia de compilatoare GNU pentru C, C++, Pascal și interpretorul de Python.
- Puteți selecta ce probleme să rezolvați, în ce ordine doriți.
- Pentru fiecare problemă va trebui să trimiteți doar fișierul sursă (C/C++/Pascal/Python).
- Puteți trimite un număr limitat de rezolvări/soluții pentru o problemă.
- Numele fișierul sursa trimis nu conteaza. Conteaza doar extensia, pentru a sti ce compilator/interpretor sa se foloseasca: c,cpp,pas sau py".
- Citirile datelor de intrare si scrierile datelor de iesire se considera ca fiind de la dispozitivele standard de intrare/iesire (tastatura, respectiv ecran) sau din fișierele input.txt / output.txt.
- Fiecare problema are un punctaj asociat. Scorul se calculeaza inmultind numarul de teste trecute cu punctajul fiecarei probleme si insumand pentru toate problemele rezolvate.
- O solutie se considera corecta daca se compileaza si trece toate testele. Dar se puncteaza si solutii care nu trec toate testele.
- Puteti trimite solutii de mai multe ori. Acest lucru poate influenta scorul dumneavoastra, deoarece se va lua în calcul doar ultima solutie trimisa.
- Orice program care depaseste limita de timp la execuție, pe cel puțin un test, va fi marcat ca 'Timp depășit'
- ATENTIE : Nu aveti voie sa folositi apeluri de sistem in programele dumneavoastra.
- ATENTIE : Nu se vor folosi functii nestandard, precum getch(), strrev(), gets() etc.
- ATENTIE : Orice incercare de spargere a sistemului va conduce automat la stergerea contului dumneavoastră.
- ATENTIE : Fiti atenti la formatele intrarilor si iesirilor. Chiar si un singur caracter poate conduce la o solutie incorecta.
Cum să trimiteți o soluție
- Încărcați fișierul sursă sau scrieți/lipiți codul dumneavoastră în pagina corespunzătoare fiecărei probleme.
- Fișierul generat va fi compilat, apoi testat automat de sistem și punctajul obținut sau eventualul mesaj de eroare se va afișa.
- Acest lucru poate dura puțin, când serverul este încărcat, așa încât vă rugăm să aveți răbdare.
Ce se întâmplă când trimiteți o soluție
- Fișierul dumneavoastră este compilat.
- Programul executabil produs este rulat, pe mai multe teste, având mai multe date de intrare.
- Pentru fiecare test în parte, ieșirea produsă este salvată.
- Ieșirea este comparată cu ieșirea asteptată la acel test. Daca se potrivesc, soluția primește un punctaj corespunzător.
- Executabilul este rulat pentru o perioadă de maxim 1-2 secunde (în funcție de problemă), după care este oprim automat.
Verdicte
- 10 puncte : Codul a fost compilat corect și a trecut toate testele cu brio.
- 1-9 puncte : Codul a fost compilat corect și a trecut doar 1-9 teste.
- 0 puncte : Codul a fost compilat corect, dar a eșuat la toate testele.
- Limita de timp : Codul dumneavoastră a durat mai mult decât timpul alocat soluției problemei pentru a se executa.
- Eroare de compilare : Codul dumneavoastră nu s-a compilat corect sau are un apel de sistem în el.
- Fișier nevalid : Fișierul pe care l-ați dat nu este un fișier sursă corect, în limbajul specificat (C/C++/Pascal/Python).
Despre interfață
- Toate tabelele și diagramele se auto-reîmprospătează, deci nu trebuie se reîmprospatați paginile.
- Profil afișează datele dumneavoastră, anunțuri, profilul dvs. educațional și diferite statistici.
- Clasa mea afișează informații despre elevii/studenții arondați unui profesor confirmat, într-o clasă virtuală.
- Interfața este în continuă dezvoltare. Sisteme de ghidare cu voce sintetizată și prelucrări inteligente sunt adăugate în permanență.
Observații
- Citirea în Python 3 (folosit de noi) a două numere întregi este:
[x,y] = input().split() x = int(x) y = int(y) print(x+y)
- Funcția input() poate fi folosită simplu, pentru citirea unui singur string (șir de caractere). În exemplul de mai sus se citește de la tastatură o linie și ea se returnează ca string. Metoda split() a obiectului string returnează o listă cu cuvintele care îl alcătuiesc. Variabilele x și y sunt apoi convertite la numere întregi.
- În Python 3 print este funcție. Soluția de mai sus profită de faptul că în toate testele cele două numere sunt situate pe aceeași linie.
- Citirea în Python 3 a unei liste de n cuvinte (numărul lor n fiind pe prima linie, iar cuvintele pe a doua - ca la problema 210) se poate face astfel:
[n]=input().split() n=int(n) L=input().split()
- Citirea în Python 3 a unui vector/șir de n numere întregi (n fiind pe prima linie, iar numerele pe a doua)
[n]=input().split() n=int(n) L=input().split() for i in range(len(L)): L[i]=int(L[i])
- Înainte de a trimite codul rezolvării problemei în C/C++, puteți face o verificare scurtă a unor elemente.
- Evitați folosirea unei variabile cu numele index în C/C++.