Fișierul intrare/ieșire balon.in, balon.out Sursă ONI 2023 clasa a 6-a
Autor Florentina Ungureanu Adăugată de avatar francu Cristian Frâncu francu
Timp de execuție pe test 0.75 sec Limită de memorie 65536 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip fullstea de rating de tip halfstea de rating de tip emptystea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Balon (clasa a 6-a)

Notă: această problemă este o aplicație “de manual” a ultracunoscutului “șmen al lui Mars”, o noțiune ce nu a apărut niciodată la clasa a șasea. Problema nu se rezolvă cu șmenul lui Mars, ea este însăși șmenul lui Mars. Desigur că o problemă ce cere exact manualul nu are ce căuta la faza națională a unei olimpiade. De ce comisia a decis să o dea este un mister. Cu reticență am adăugat-o pe acest site, pentru completitudine – din nefericire a fost dată la ONI clasa a șasea în 2023.

Firma TgM produce plăci de umflat baloane. O placă de dimensiuni n x m este formată din n linii cu câte m celule pătrate de latură 1, fiecare celulă conținând un dispozitiv de care poate fi prins un balon pentru a fi umflat. Un balon are un nivel de umplere bij cuprins între 1 (dezumflat) și nivelul de umplere maxim posibil k. Introducerea unui nou volum de aer într-un balon umplut la nivelul maxim k, conduce la spargerea lui (nivel k + 1). Fiecare balon spart este înlocuit automat cu un balon nou aflat la nivelul de umplere 1 înainte de a introduce un nou volum de aer în oricare dintre baloanele de pe placă.

Introducerea aerului în anumite baloane se face printr-o acționare care constă în următorii pași:

  • se conectează un sistem cilindru-piston la dispozitivul dintr-o celulă aflată pe linia x și coloana y;
  • se selectează o valoare naturală nenulă d;
  • se apasă butonul Air aflat pe mânerul pistonului.

În urma acționării butonului Air, fiecare balon situat în pătratul cu colțul din stânga sus (xy) cu latura d trece de la nivelul de umplere curent la nivelul de umplere imediat următor. Dacă pătratul de latură d depășește una sau mai multe din marginile plăcii, se transmite aer doar în baloanele aflate în interiorul acestuia. La acționarea butonului se consumă un număr de unități de volum de aer egal cu numărul de baloane aflate în interiorul pătratului.

Cerințe

Dându-se dimensiunile unei plăci n și m, nivelul maxim posibil de umplere a unui balon k, numărul p de acționări ale butonului Air, nivelul inițial de umplere al fiecărui balon de pe placă și pentru fiecare dintre acționările pistonului cele trei valori x, y și d corespunzătoare, scrieți un program care determină și afișează:

  1. numărul de unități de aer consumate după cele p acționări ale butonului Air;
  2. numărul de baloane sparte după cele p acționări ale butonului Air;
  3. nivelul maxim de umplere a unui balon după cele p acționări ale butonului Air și numărul de baloane aflate la acest nivel de umplere.

Date de intrare

Fișierul de intrare balon.in conține pe prima linie un număr natural C, reprezentând cerința ce trebuie rezolvată (1, 2 sau 3), pe a doua linie patru numere naturale nenule n, m, k și p, cu semnificația din enunț, pe fiecare din următoarele n linii câte m valori reprezentând nivelul inițial de umplere a baloanelor de pe linia respectivă, iar pe fiecare din ultimele p linii câte trei numere naturale x, y și d corespunzătoare unei acționări a pistonului. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.

Date de ieșire

În fișierul de ieșire balon.out:

  • dacă C = 1, se va afișa pe prima linie numărul de unități de aer consumate după cele p acționări ale butonului Air;
  • dacă C = 2, se va afișa pe prima linie numărul de baloane sparte după cele p acționări ale butonului Air;
  • dacă C = 3, se vor afișa pe prima linie două numere separate printr-un spațiu reprezentând nivelul maxim de umplere a unui balon după cele p acționări ale butonului Air și numărul de baloane aflate la acest nivel de umplere.

Restricții

  • C ∈ {1, 2, 3};
  • 1 ≤ n, m, d ≤ 1 000;
  • 1 ≤ xn și 1 ≤ ym;
  • 3 ≤ k, p ≤ 1 000 000;
  • 1 ≤ bijk, pentru oricare 1 ≤ in și 1 ≤ jm;

Punctaj Restricții
1
30
C = 1
2
35
C = 2
3
35
C = 3

Exemple

balon.in balon.out Explicații
1
4 6 5 2
1 2 3 3 2 1
1 1 4 3 2 2
3 1 1 1 5 3
2 4 2 4 2 2
2 1 3
3 5 3
13
C = 1, n = 4, m = 6, k = 5 și p = 2.
La prima acționare a pistonului se consumă 9 unități de volum de aer corespunzătoare
elementelor marcate cu galben în figura din enunț.
La a doua acționare a pistonului se consumă 4 unități de volum de aer corespunzătoare
elementelor marcate cu roz în figura din enunț, deoarece doar patru dintre baloane sunt în
interiorul pătratului de latură 3 cu colțul din stânga sus în poziția (3, 5).
2
4 6 5 3
1 2 3 3 2 1
1 1 4 3 2 2
3 1 1 1 5 3
2 4 2 4 2 2
2 1 3
3 5 3
3 2 4
2
C = 2, n = 4, m = 6, k = 5 și p = 3.
După prima acționare corespunzătoare tripletei x=2, y=1, d=3 nivelurile de umplere devin:
1 2 3 3 2 1
2 2 5 3 2 2
4 2 2 1 5 3
3 5 3 4 2 2 și nu s-a spart niciun balon.
După a doua acționare corespunzătoare tripletei x=3, y=5, d=3 nivelurile de umplere devin:
1 2 3 3 2 1
2 2 5 3 2 2
4 2 2 1 1 4
3 5 3 4 3 3 și s-a spart balonul din poziția x=3, y=5, fiind înlocuit automat cu un balon nou.
După a treia acționare corespunzătoare tripletei x=3, y=2, d=4 nivelurile de umplere devin:
1 2 3 3 2 1
2 2 5 3 2 2
4 3 3 2 2 4
3 1 4 5 4 3 și s-a spart balonul din poziția x=4, y=2, fiind înlocuit automat cu un balon nou.
În total s-au spart 2 baloane.
3
4 6 5 3
1 2 3 3 2 1
1 1 4 3 2 2
3 1 1 1 5 3
2 4 2 4 2 2
2 1 3
3 5 3
3 2 4
5 2
C = 3, n = 4, m = 6, k = 5 și p = 3.
După cele trei acționări, nivelurile de umplere au devenit:
1 2 3 3 2 1
2 2 5 3 2 2
4 3 3 2 2 4
3 1 4 5 4 3
Nivelul maxim de umplere a unui balon este 5 și sunt două baloane cu acest nivel de umplere.

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 5 categorii