
La final de semestru, profesorul Morf, cunoscut pentru strictețea și perfecționismul său, s-a trezit într-o situație delicată: toți elevii din clasa a VIII-a aveau punctaje cam prea mari în catalog și directorul tocmai anunțase o verificare a mediilor, iar Morf știa că o clasă plină de punctaje atât de mari ar ridica semne de întrebare.
Dar acesta nu putea fi evident, deoarece dacă ar fi scăzut punctajele prea rapid elevii ar fi observat imediat. Așa că profesorul a găsit o metodă mai discretă.
În fiecare seară, după ce școala se golea, el deschidea catalogul și alegea grupuri de elevi așezați unii lângă alții și le micșora notele tuturor din acel grup cu un punct. Făcea asta atent, având grijă ca niciun punctaj să nu scadă sub zero.
Și astfel, între filele prăfuite ale catalogului, s-a născut una dintre cele mai ciudate și elegante dileme: cum să micșorezi punctajele elevilor cât mai repede, fără ca nimeni să-și dea seama.
Cerință
Se dă un vector de numere naturale. O operație constă în alegerea unui interval cu și scăderea cu a fiecărui element din acel interval. Operația este permisă numai dacă, în momentul aplicării, toate elementele din intervalul respectiv sunt mai mari sau egale cu .
Transformați vectorul într-un vector nul (care are toate elementele nule), folosind un număr minim de operații. În funcție de cerință:
- afișați doar numărul minim de operații;
- afișați numărul minim de operații și operațiile în ordinea aplicării lor.
Date de intrare
Fișierul de intrare zerouri.in conține:
- pe prima linie două numere naturale nenule, și , cu semnificația din enunț;
- pe următoarea linie numere naturale, reprezentând elementele vectorului .
Date de ieșire
Pe prima linie a fișierului de ieșire zerouri.out se va afișa un singur număr , reprezentând numărul minim de operații. Dacă , pe următoarele linii, vor fi, în ordinea aplicării lor, operațiile, reprezentate prin valorile și separate printr-un spațiu.
Restricții și precizări
Pentru :
- ;
- , .
Pentru :
- ;
- , .
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 10 | |
| 2 | 10 | |
| 3 | 30 | |
| 4 | 50 |
Exemplul 1
zerouri.in
1
6
2 0 1 1 0 2
zerouri.out
5
Explicație
Se pot alege intervalele . Se poate demonstra că această soluție este optimă.
Exemplul 2
zerouri.in
2
6
2 0 1 1 0 2
zerouri.out
5
1 1
1 1
3 4
6 6
6 6