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++.