Pentru a participa la un concert, n persoane s-au așezat la coadă pe un singur rând în așteptarea deschiderii casei de bilete. Înălțimile celor n persoane sunt toate distincte. Pe baza acestei informații cruciale, agenții de securitate au decis ca din motive de ... securitate, ordinea persoanelor care așteaptă la
coadă trebuie schimbată în funcție de înălțimile lor. Astfel, agentii de pază vor alege, pe rând, câte o persoană și o vor trimite la sfârșitul rândului. După fiecare operație de tipul acesta, să-i spunem “de mutare”, rândul se restrânge, ocupându-se poziția rămasă liberă. Strategia agenților de pază este aceasta: la terminarea tuturor operațiilor de mutare, riscul minim de securitate se obține dacă toate persoanele aflate în dreapta persoanei celei mai înalte vor fi mai înalte decât cele aflate în stânga persoanei cele mai înalte. În plus, înalțimile persoanelor vor fi crescătoare până la poziția k a persoanei celei mai înalte și descrescătoare după poziția k.
Mai exact: dacă sunt înălțimile persoanelor după finalizarea operațiilor de mutare, atunci: există o poziție k, cu astfel încât și în plus pentru oricare și . Deoarece o asemenea logică este greu de combătut, iar agenții nu au aerul că vor să glumească, persoanele care așteaptă la coadă vor accepta toate mutările impuse de către aceștia.
Cerință
Cunoscând numărul de persoane n și înălțimile ale acestora să se scrie un program care determină:
- Poziția persoanei celei mai înalte în rândul inițial, în cazul în care nu sunt necesare operații de mutare.
- Numărul minim de mutări necesare pentru ca rândul de persoane să prezinte un risc minim de securitate.
Date de intrare
Pe prima linie a fişierului de intrare risc.in
se găsește numărul natural a cărui valoare poate fi doar 1 sau 2. Pe a doua linie a fișierului de intrare se află numărul natural cu semnificaţia din enunţ. Pe a treia linie se găsesc numere naturale, distincte: , separate prin câte un singur spaţiu, reprezentând înălțimile persoanelor.
Date de ieșire
Fișierul de ieșire este risc.out
.
- Dacă valoarea lui este atunci se va rezolva numai cerinţa . În acest caz, fişierul de ieşire va conţine pe prima linie un număr natural poz ce reprezintă poziția persoanei celei mai înalte în rândul inițial. Dacă rândul inițial nu respectă condițiile de risc minim de securitate, atunci este .
- Dacă valoarea lui este se va rezolva numai cerinţa . În acest caz fişierul de ieşire va conține pe prima linie un număr natural , reprezentând numărul minim de mutări necesare pentru a obține risc minim de securitate.
Restricții și precizări
- Persoana cea mai înaltă într-o configurație cu risc minim de securitate poate fi plasată pe oricare dintre pozițiile
- Pentru din teste, , iar pentru alte din teste,
- Pentru rezolvarea corectă a primei cerinţe se acordă de puncte, iar pentru cerința a doua se acordă de puncte.
Exemplul 1
risc.in
1
4
35 20 10 1
risc.out
1
Explicație
, deci se rezolvă numai cerinţa . Rândul îndeplinește condițiile de risc minim de securitate. Persoana cea mai înaltă se găseste pe poziția .
Exemplul 2
risc.in
1
6
1 8 12 20 15 10
risc.out
-1
Explicație
, deci se rezolvă numai cerinţa . Rândul NU îndeplinește condițiile de risc minim de securitate. Șirul înălțimilor nu respectă condiția ca toate valorile înălțimilor din dreapta poziției persoanei celei mai înalte să fie mai mari decât toate valorile înălțimilor din stânga acesteia. Deci .
Exemplul 3
risc.in
2
5
2 8 4 20 16
risc.out
1
Explicație
, deci se rezolvă numai cerinţa . Se mută persoana de înălțime la sfârșitul rândului. Deci .
Exemplul 4
risc.in
2
6
3 19 7 30 10 25
risc.out
2
Explicație
, deci se rezolvă numai cerinţa . Prima operație: se mută persoana de înălțime la sfârșitul rândului. Rândul devine: 3 7 30 10 25 19
. A doua operație: se mută persoana de înălțime la sfârșitul rândului. Rândul devine: 3 7 30 25 19 10
. Deci .