#1186
Risc
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ă h[1]
, h[2]
, …, h[n]
sunt înălțimile persoanelor după finalizarea operațiilor de mutare, atunci: există o poziție k
, cu 1 ≤ k ≤ n
astfel încât h[1] < h[2] < ... h[k-1] < h[k] > h[k+1] > … > h[n-1] > h[n]
și în plus h[i] < h[j]
pentru oricare i < k
și k < j
.
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.
Cunoscând numărul de persoane n
și înălțimile h[1]
, h[2]
, …, h[n]
ale acestora să se scrie un program care determină :
1. Poziția persoanei celei mai înalte în rândul inițial, în cazul în care nu sunt necesare operații de mutare.
2. Numărul minim de mutări necesare pentru ca rândul de persoane să prezinte un risc minim de securitate.
Problema | Risc | Operații I/O |
![]() risc.in /risc.out
|
---|---|---|---|
Limita timp | 0.02 secunde | Limita memorie |
Total: 4 MB
/
Stivă 4 MB
|
Id soluție | #50617695 | Utilizator | |
Fișier | risc.cpp | Dimensiune | 1.28 KB |
Data încărcării | 17 Aprilie 2024, 12:22 | Scor / rezultat | 100 puncte |
risc.cpp: In function 'int main()': risc.cpp:58:36: warning: 'k' may be used uninitialized in this function [-Wmaybe-uninitialized] fout << n - max(cnta, desc + k); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 5 | 5 | ||
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0 secunde | OK. | 5 | 5 | ||
3 | 0 secunde | OK. | 5 | 5 | ||
4 | 0 secunde | OK. | 3 | 3 | ||
5 | 0 secunde | OK. | 3 | 3 | ||
6 | 0 secunde | OK. | 3 | 3 | ||
7 | 0 secunde | OK. | 4 | 4 | ||
8 | 0 secunde | OK. | 4 | 4 | ||
9 | 0 secunde | OK. | 4 | 4 | ||
10 | 0 secunde | OK. | 4 | 4 | ||
11 | 0 secunde | OK. | 5 | 5 | ||
12 | 0 secunde | OK. | 5 | 5 | ||
13 | 0 secunde | OK. | 5 | 5 | ||
14 | 0 secunde | OK. | 5 | 5 | ||
15 | 0 secunde | OK. | 5 | 5 | ||
16 | 0 secunde | OK. | 5 | 5 | ||
17 | 0 secunde | OK. | 5 | 5 | ||
18 | 0 secunde | OK. | 5 | 5 | ||
19 | 0 secunde | OK. | 5 | 5 | ||
20 | 0.016 secunde | OK. | 5 | 5 | ||
21 | 0.012 secunde | OK. | 5 | 5 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Risc face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.