Lista de probleme 23

Etichete

Fie un șir de N coloane de ciment (pozițiile lor fiind numerotate de la 1 la N) de aceeași lățime și diverse înălțimi. Ele sunt încadrate la stânga (poziția 0) și la dreapta (poziția N+1) de ziduri foarte înalte. Apa începe să curgă de deasupra primei coloane, câte o pătrățică de apă pe secundă. Apa se acumulează dacă are pereți în stânga și în dreapta, altfel curge mai jos către dreapta. Deasupra fiecărei coloane de ciment se poate forma astfel o coloană de apă, cu înălțimea egală cu numărul de pătrățele de la nivelul apei până la zona de contact cu coloana de ciment.

  • Care este înălțimea H a celei mai înalte coloane de apă după ce apa a ajuns peste tot la înălțimea celei mai înalte coloane de ciment?
  • Care este numărul T de secunde în care apa ajunge să acopere coloana numărul P?
  • Care este poziția D a celei mai din dreapta coloane acoperită de apă după S secunde?
  • Care este poziția R a celei mai din stânga coloane pe care o putem reduce cu o unitate astfel încât apa să ajungă cât mai repede la coloana P?

rgb

#4137

Ionuţ, tânăr programator, se lansează pe piaţa producătorilor de jocuri pe calculator. Jocul pe care l-a proiectat se numeşte RGB. În joc există N personaje extraterestre. Scrieţi un program care, cunoscând culorile şi puterile extratereştrilor, rezolvă următoarele două cerinţe:
1) determină puterea extraterestrului care câştigă cele mai multe lupte; dacă există mai mulţi astfel de extratereştri, se va afişa puterea minimă;
2) determină pentru fiecare extraterestru numărul de lupte câştigate de acesta.

culori6

#4132

Pe o foaie a unui caiet de matematică sunt N rânduri de pătrățele pe care Andrei le-a numerotat de sus în jos cu valori de la 1 la N. Pe fiecare rând, Andrei colorează unul sau mai multe pătrățele având la dispoziție un set de 9 creioane de culori diferite, culori ce sunt codificate cu valori distincte de la 1 la 9. Pentru fiecare rând al caietului, Andrei stabilește un număr de pătrățele alăturate ce le va colora și procedează astfel: alege un creion cu care colorează primul pătrățel (cel din stânga foii sale), apoi procedează la fel pentru al doilea pătrățel și așa mai departe până termină de colorat numărul de pătrățele stabilit de el pentru rândul respectiv (pot exista două sau mai multe pătrățele colorate la fel). Cunoscând numărul N de rânduri cu pătrățele, numărul de pătrățele colorate de pe fiecare rând și culoarea fiecărui pătrățel, scrieți un program care să determine:

  • Lmax si Kmax, două numere naturale, unde Lmax reprezintă lungimea maximă unui rând ce are proprietatea că oricare două pătrățele alăturate au culori diferite, iar Kmax reprezintă câte astfel de rânduri sunt pe foaie.
  • Cel mai mare număr natural ce se poate forma prin lipirea tuturor cifrelor corespunzătoare culorilor de pe același rând, parcurse de la stânga la dreapta.

O companie de transport cu microbuze din județul Iași a adoptat o strategie proprie pentru rutele din județ. Scrieţi un program care să rezolve următoarele cerințe:

  • determină preţul minim al unui set de bilete ce poate fi achiziționat pentru parcurgerea a exact N kilometri;
  • determină distanţele alese de Gigel, astfel încât preţul total al călătoriei să fie minim;
  • determină două seturi distincte de bilete pentru care prețul total al biletelor este același și este cel mai mare posibil. Pentru fiecare set nu este permisă alegerea mai multor bilete cu același preț și nu există două bilete cu același preț în ambele seturi.

Un număr se numește triprim dacă este produsul a trei numere prime distincte. Exemple de numere triprime: 30 = 2 × 3 × 5, 42 = 2 × 3 × 7, 231 = 3 × 7 × 11. Date fiind numerele A și B, să se afișeze numărul de numere triprime din intervalul [A, B] (inclusiv A și B).

bug

#4140

Dacă vrei să-ți schimbi buletinul trebuie să mergi la Serviciul de Evidență a Populației. Acolo trebuie să iei un număr de ordine și să aștepți să-ți vină rândul. Numerele de ordine sunt emise de un robot, în ordinea 1,2,3,... Programatorul Vasile, care a elaborat soft-ul pentru robot și care asigură (contra cost) întreținerea sistemului, a creat intenționat un bug în sistem. Vasile are un număr natural preferat N. Un număr de ordine x va fi emis dacă și numai dacă x este un subșir al lui N (adică toate cifrele lui x apar în N în ordinea din x, nu neapărat pe poziții consecutive). Dacă numărul de ordine curent x nu îndeplinește această condiție, robotul se blochează și nu mai emite numere de ordine. Scrieți un program care, cunoscând valoarea lui N, numărul natural preferat de Vasile, rezolvă următoarele două cerințe:
1. determină câte cifre are numărul de ordine x care conduce la blocarea robotului;
2. determină numărul de ordine x care conduce la blocarea robotului.

text3

#4135

Alexandra citește un text format din litere mici și mari ale alfabetului englez și spații. Fiind interesată de criptografie, ea elimină toate spațiile și apoi încadrează literele, în ordinea în care acestea apar în text, într-un tablou bidimensional, în care numărul de linii este mai mic sau egal decât numărul de coloane. Întrucât pot exista mai multe moduri de încadrare a textului, Alexandra îl alege pe cel pentru care diferența absolută dintre numărul liniilor și al coloanelor tabloului este minimă.
1) Notând cu N numărul de linii și cu M numărul de coloane ale tabloul bidimensional obținut, afișați elementele acestuia pe primele N linii ale fișierului de ieșire, fiecare linie conținând exact M litere fără spații între ele. Afișarea se va face în ordinea crescătoare a indicilor liniilor și pe fiecare linie în ordinea crescătoare a indicilor coloanelor.
2) Determinați cel mai lung palindrom de pe o linie sau de pe o coloană a tabloului obținut. În cazul în care există mai multe palindromuri de aceeași lungime, se va afișa cel care este cel mai mare din punct de vedere lexicografic conform codului ASCII.
3) Determinați care este numărul maxim de elemente dintr-un subtablou dreptunghiular, ce conține doar vocale.

ONI 2022, clasa a VII-a

Dat fiind un șir de N numere naturale A[1], A[2], …, A[N], și un algoritm, prezentat în pseudocod, care este valoarea lui cnt la sfârșitul algoritmului? Care este valoarea lui score la sfârșitul algoritmului, modulo 666.013?

ONI 2022, clasa a X-a

Cea mai cunoscută măsură a unui vârf de munte este altitudinea sa. Vârfuri secundare ale unui munte înalt pot avea altitudini considerabile, dar în general acestea nu sunt atât de relevante. Din acest motiv, geografii au introdus o nouă măsură pentru un vârf: proeminenţa. Un profil este o reprezentare a altitudinilor în puncte succesive, între care ne putem deplasa la stânga sau dreapta. Scrieţi un program care, cunoscând configuraţia unui profil, rezolvă următoarele două cerinţe:
1) determină numărul de vârfuri existente pe profilul respectiv;
2) determină proeminenţa fiecărui vârf de pe profil.

ONI 2022, clasa a VIII-a

regate

#4118

În tărâmul ONI se află N regate legate între ele prin M muchii bidirecționale. Se garantează că se poate ajunge de la orice regat la oricare alt regat folosind aceste muchii. Aceste regate vor să facă alianțe între ele și se vor folosi de puncte de frontieră pentru a realiza acest lucru. Fiecare muchie i, unde 1 ≤ i ≤ M, are asociat un număr natural c[i] reprezentând costul construcției unui punct de frontieră pe aceasta. Mai mult decât atât, fiecare regat i, unde 1 ≤ i ≤ N, are asociat un număr natural r[i] reprezentând costul construcției unui punct de frontieră la intrarea acestuia. Pentru fiecare regat trebuie să calculați costul pe care acesta trebuie să-l plătească pentru a fi într-o alianță perfectă. Cu alte cuvinte, pentru fiecare regat i, unde 1 ≤ i ≤ N, trebuie să calculați \( \sum_{j = 1, j \neq i}^{N} \mathit{Cost}(i, j) \).

ONI 2022, clasele 11-12

Du-te sus!