Lensu are o grădină foarte mare și iși dorește să ude toate cele plante puse în linie lângă fântâna lui. Pentru a nu se ofili până seara, fiecare plantă trebuie să primească o cantitate de cel puțin pictături de apă. Acesta nu vrea să iși piardă timpul, așa că roagă echipa de robotică să îl ajute să construiască un robot care să îi facă toata treaba.
Deși au lucrat foarte mult la robot, algoritmul acestuia este foarte ciudat. Din locul în care se află, robotul nostru va uda cu o picătură în fiecare secundă a staționării, toate plantele din intervalul delimitat de cea mai apropiată plantă din stânga cu cantitatea necesară strict mai mică decât cantitatea necesară plantei curente și de cea mai apropiată plantă din dreapta cu cantitatea necesară strict mai mare decât cantitatea necesară plantei curente. Dacă nu există o plantă din stânga cu propietatea de mai sus atunci robotul va uda până la planta , iar dacă nu există o plantă din dreapta cu propietatea de mai sus atunci robotul va uda până la planta .
Dimineața, Lensu îi va da robotului date de tipul:
- locul staționării robotului
- cât timp (în secunde) va staționa acolo
Cerința
Lensu, pasionat de algoritmică presimte că robotul nu este atât de eficient pe cât și-ar fi dorit să fie și vă roagă să îl ajutați să răspundă la următoarea întrebare:
Cunoscând faptul că robotul nu știe când capacitatea plantei este atinsă, astfel continuând să ude planta dacă se află în raza lui de acțiune, care este numărul maxim de plante pe care le-ar putea Lensu salva de la ofilire dacă ar redistribui picăturile irosite, udând alte plante?
Date de intrare
Pe prima linie se afla numărul , pe a doua linie cele cantități necesare fiecărei plante, pe a treia linie numărul , reprezentând numărul de date, iar pe următoarele linii câte două numere și , cu semnificația din enunț. Numerele aflate pe aceeași linie sunt separate prin câte un spațiu.
Date de ieșire
Pe prima linie se va afla un singur număr, răspunsul la întrebare.
Restricții și precizări
- În timpul trecerii de la un loc la altul robotul nu udă nicio plantă
- Pentru de puncte,
Observatie
Datorita faptului ca inputul este foarte mare pentru citire se folosesc instructiunile urmatoare la inceputul codului:
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
Exemplul
stdin
10
3 2 5 1 8 0 4 10 5 3
4
4 3
7 1
5 2
1 3
stdout
4
Explicație
Robotul va executa prima comandă și va uda plantele de la poziția la poziția , timp de secunde (cea mai apropiată plantă din stânga cu capacitatea mai mică decât capacitatea plantei nu există, așa că acesta va începe să ude de la prima plantă, iar cea mai apropiată plantă din dreapta cu capacitatea mai mare decât capacitatea plantei este planta cu numărul , având capacitatea ).
Robotul va executa comanda a doua și analog, după algoritmul prezentat, va uda plantele de la poziția la poziția , timp de o secundă.
Robotul va executa comanda a treia și va uda plantele de la poziția la poziția , timp de secunde.
Robotul va executa ultima comandă și va uda plantele de la poziția la poziția , timp de secunde.
La sfârșitul operațiilor fiecare plantă va fi udată timp de:
secunde.
Se observă că se irosesc picături pe care le putem redistribui astfel încat să salvam maxim plante.