Cerința
Se dă un șir V
cu N
valori naturale nenule, memorate pe poziții consecutive începând cu poziția 1
. Notăm cu S
următoarea secvență de cod aplicată asupra sa:
(C/C++) maxim = 0; rep = 0; for(i = 1; i <= N; i++) if(V[i] > maxim) maxim = V[i]; else if(V[i] == maxim) rep++;
Considerăm operația de eliminare din V
a elementului de pe o anumită poziție dată P
. În urma operației de eliminare elementele de pe pozițiile P + 1, P + 2, ..., N
ajung pe o poziție cu 1
mai mică iar N
scade cu 1
.
Dându-se mai multe operații de eliminare(independente una de alta, adică fiecare se aplică asupra șirului inițial, nu după operația anterioară), să se determine valoarea variabilei rep
dacă am aplica secvența S
asupra șirului obținut după fiecare operație de eliminare.
Date de intrare
Fițierul maxime.in
conține pe prima linie un număr natural N
. Pe linia a doua se află N
numere naturale nenule, separate prin câte un spațiu. Pe linia următoare se află un număr M
reprezentând numărul de operații de eliminare. Linia următoare conține M
numere, cuprinse între 1
și N
, ce reprezină poziția din șir a elementului la care se realizează eliminarea curentă. Numerele de pe această linie sunt separate prin câte un spațiu.
Date de ieșire
Fișierul maxime.out
conține pe primul rând M
numere, separate prin câte un spațiu, reprezentând valoarea variabilei rep
obținută aplicând secvența S
după fiecare operație de eliminare.
Restricții și precizări
2 ≤ N ≤ 100.000
1 ≤ V
i
≤ 100.000
1 ≤ M ≤ 100.000
1 ≤ poziție eliminare ≤ N
Exemplu:
maxime.in
6 3 1 3 8 1 8 3 2 5 6
maxime.out
2 2 1
Explicație
Aplicând prima operație de eliminare, șirul devine: N = 5
și V = 3 3 8 1 8
, valoarea rep
devine 2
.
Aplicând a doua operație de eliminare, șirul devine: N = 5
și V = 3 1 3 8 8
, valoarea rep
devine 2
.
Aplicând a treia operație de eliminare, șirul devine: N = 5
și V = 3 1 3 8 1
, valoarea rep
devine 1
.