Model subiect olimpiada de informatică, clasa a 9-a, faza județeană

buldo 90 de puncte 
 
Dorești să nivelezi terenul pe care l -ai cumpărațcare are lățimea de 1 metru și lungimea de N metri, 
fiind alcătuit din N zone succesive, fiecare zonă având lungimea de 1 metru. Terenul se reprezintă ca un 
șir de N numere naturale h1, h2, h3, ..., hN reprezentând înălțimile în metri pe care le au  zonele 
din terenul inițial, privite de la stânga spre dreapta. 
Pentru a nivela terenul ai înch iriat un buldozer care funcționează astfel. Se alege o înălțime H (număr 
natural) la care ridicăm lama buldozerului. Inițial buldozerul are pe lamă o cantitate C=0 metri cubi de 
pământ. Buldozerul începe să mergă de la stânga la dreapta și când ajunge la zona i, în funcție de 
înălțimea hi a acesteia, se va afla în una dintre următoarele situații: 
- dacă hi ≥ H atunci cantitatea suplimentară hi - H se adaugă la C și nivelul zonei ajunge la H. 
- dacă hi < H atunci se scade din C diferența H - hi pentru a aduce nivelul zonei la nivelul  H. 
Remarcăm faptul că H trebuie ales inițial astfel încât de fiecare dată când buldozerul ajunge în a doua 
situație să aibă pe lamă suficient pământ (C ≥ H - hi). După ce buldozerul parcurge cele N zone de 
lungime 1 pe lama buldozerului e posibil să mai rămână pămânțdar asta nu te interesează, pentru că la 
capătul din dreapta al terenului este un râu, și pământul rămas se va vărsa acolo.  
 
Cerinţă 
Scrieţi un program care calculează înălțimea maximă  H la care poate fi ridicată lama, astfel încât terenul 
să poată fi nivelat la acea înălțime.  
 
Date de intrare 
Fişierul de intrare buldo.in conţine pe prima linie numărul natural N, iar pe a doua linie , separate prin 
câte un spațiu, cele N numere naturale h1, h2, h3, ..., hN , cu semnificația din enunț. 
 
Date de ieşire 
Fişierul de ieşire buldo.out va conţine o singură linie, pe care va fi scris numărul natural H cerut. 
 
Restricţii și precizări 
 1 ≤ N ≤ 100000 
 Înălțimile sunt numere naturale,  1 ≤ hi ≤ 1000 000 000, pentru orice i, 1≤i≤N. 
 Pentru teste în valoare de 50 de puncte, N ≤ 1000 și hi ≤ 1000, pentru orice i, 1≤i≤N.
2  cetate 90 de puncte 
 Cetatea Vizima din regatul Temeria poate fi reprezentată printr -o matrice cu N linii și M coloane, 
numerotate începând cu 1. Vizima este o cetate înfloritoare, fapt datorat numărului mare de negustori și 
meșteri prezenți. Din acest motiv, fiecărei celule din matrice îi este atribuit un profit corespunzător zonei 
respective. Regele Foltest dorește să reconstruiască zidurile cetății, dar cum  războiul cu Imperiul 
Nilfgaard bate la ușă și resursele regatului sunt limitate, el trebuie să aleagă o porțiune pe care să o 
poată apăra, reprezentată ca o submatrice. O submatrice este identificată printr-o configurație de patru 
numere i1,j1,i2,j2 (1≤i1≤i2≤N, 1≤j1≤j2≤M), în această ordine,  și este formată din elementele 
situate pe liniile consecutive i1,i1+1,...i2 și pe coloanele consecutive j1,j1+1,...j2 ale matricei 
prin care este reprezentată cetatea . Laturile submatricei sunt egale cu numărul de linii, respectiv de 
coloane din care a preluat elemente, iar profitul submatricei este suma valorilor din celulele sale. 
 
Cerinţe 
Scrieţi un program care, cunoscând matricea cetății și o valoare K, determină: 
1) profitul maxim al unei submatrice cu laturile egale cu K, precum și configurația prin care se identifică ea; 
2) profitul maxim al unei  submatrice cu laturile cel mult egale cu K, precum și configurația prin care se 
identifică ea. 
 
Date de intrare 
Fişierul de intrare cetate.in  conţine pe primul rând o valoare c egală cu  1 sau 2,  reprezentând 
cerința ce urmează a fi rezolvată. Următoarea linie conține în ordine N, M și K, cu semnificația din enunț, 
iar pe următoarele N linii se află câte M numere, reprezentând valorile din matricea dată. Numerele aflate 
pe aceeași linie a fișierului sunt separate prin câte un spațiu. 
 
Date de ieşire 
Fișierul de ieșire cetate.out va conține pe prima linie profitul maxim ceruțconform cerinței,  iar pe a 
doua linie va  conține 4 numere naturale, reprezentând configurația prin care se identifică  submatricea 
obținută. Dacă există mai multe submatrice conform cerinței, se va lua în considerare cea pentru care 
configurația formată din cele 4 numere de mai sus este minim lexicografică.  
 
Restricţii și precizări 
 1 ≤ N, M ≤ 400; 1 ≤ K ≤ min(N, M) 
 Valorile date pentru matricea cetății se află în intervalul [-109,109] 
 Pentru teste în valoare de 20 de puncte, c = 1, iar pentru restul testelor, în valoare de 70 de 
puncte, c = 2. Pentru teste în valoare de 8 puncte, c = 1 și 1 ≤ N, M ≤ 70. Pentru teste în 
valoare de 25 de puncte, c = 2 și 1 ≤ N, M ≤ 70 
 Configurația (x1,x2,x3,x4) este mai mic ă din punct ul de vedere lexicografic decât configurația 
(y1,y2,y3,y4) dacă există p astfel încât xp < yp și x1 = y1, x2 = y2 ... xp-1 = yp-1.
3 spiralmatrix 90 de puncte 
 
Parcurgând elementele unei  matrice pătratice de dimensiune n în spirală, pornind din colțul din 
stânga-sușîn sens orar, de la margin i către interior, se obține șirul strict crescător format din toate 
valorile de la 1 la n2, ca în figura de mai jos. Din șirul dat se obțin două subșiruri disjuncte, de lungime 
egală, cu număr maxim de termeni.  Primul subșir este format din numere consecutive din prima 
jumătate a șirului, și trebuie să conțină în mod obligatoriu valoarea 1, iar al doilea este format din 
numere consecutive din a doua jumătate a șirului și trebuie să conțină în mod obligatoriu valoarea n2. 
1 2 3 4 5 
16 17 18 19 6 
15 24 25 20 7 
14 23 22 21 8 
13 12 11 10 9 
Cerinţe 
Să se afle poziția în matrice a celui mai mare termen din primul subșir și a celui mai mic termen din al 
doilea subșir. 
 
Date de intrare 
Fișierul de intrare spiralmatrix.in conține numărul natural n. 
 
Date de ieşire 
În fișierul de ieșire spiralmatrix.out se vor scrie: 
- pe prima linie două numere, separate printr-un spațiu, reprezentând mai întâi linia și apoi coloana 
pe care se află în matrice cel mai mare termen al primului subșir; 
- pe a doua linie alte două numere , separate printr-un spațiu, reprezentând mai întâi linia și apoi 
coloana pe care se află în matrice cel mai mic termen al celui de al doilea subșir. 
 
Restricţii și precizări 
● 1< n < 1000 000 000; 
● Pentru teste în valoare de 45 de puncte n este impar; 
● Pentru teste în valoare de 45 de puncte n < 1000; 
● Pentru teste în valoare de 75 de puncte n < 1000 000; 
● Liniile sunt numerotate de sus în jos începând cu 1, iar coloanele sunt numerotate de la stânga la 
dreapta începând cu 1; 
● Punctajul pe un test se obține doar dacă sunt corecte toate cele 4 valori.