Cerința
8 puncteScrieți programul Pascal corespunzător algoritmului proiectat. (8p.)
Arată baremul
b) Pentru program corect - 8p. - operații cu fișiere: declarare, pregătire în vederea citirii, citire din fișier - 1p. - determinare a valorilor cerute (*),(**) - 5p. - utilizare a unui algoritm eficient (***) - 1p. - declarare a variabilelor, afișare a datelor, corectitudine globală a programului¹⁾ - 1p.
(*) Se acordă punctajul chiar dacă algoritmul ales nu este eficient. (**) Se acordă numai 3p. dacă algoritmul este principial corect, dar nu oferă rezultatul cerut pentru toate seturile de date de intrare. (***) Se acordă punctajul numai pentru un algoritm liniar. O soluție posibilă utilizează un vector de apariții, ap, unde apₚ memorează numărul de apariții ale prețului p în șirul celor propuse. Pe măsura citirii datelor din fișier se actualizează apₚ pentru fiecare valoare p citită. Valorile cerute, x și y (x>y, inițializate cu valori nule), se determină prin parcurgerea vectorului de apariții în ordine descrescătoare a lui p și memorând primele prețuri p adecvate pentru fiecare premiu, astfel: dacă apₚ≥n1 și încă nu s-a determinat un preț pentru premiul I (x=0), atunci x=p; dacă apₚ≥n2 și s-a determinat un preț pentru premiul I, dar nu și pentru premiul al II-lea (x≠0, dar y=0), atunci y=p. Algoritmul se încheie dacă y≠0 sau dacă s-a încheiat parcurgerea vectorului de apariții. Dacă după parcurgerea vectorului de apariții y=0, atunci se afișează mesajul indicat.
¹⁾ Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.