Robotul gospodar

Time limit: 0.25s Memory limit: 64MB Input: Output:

Lensu are o grădină foarte mare și iși dorește să ude toate cele NN plante puse în linie lângă fântâna lui. Pentru a nu se ofili până seara, fiecare plantă i (i1,2,,N)i \ (i ∈ {1, 2, \dots, N}) trebuie să primească o cantitate de cel puțin cic_i 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 11, iar dacă nu există o plantă din dreapta cu propietatea de mai sus atunci robotul va uda până la planta NN.

Dimineața, Lensu îi va da robotului KK date de tipul:
XiX_i - locul staționării robotului
TiT_i - 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 NN, pe a doua linie cele NN cantități necesare fiecărei plante, pe a treia linie numărul KK, reprezentând numărul de date, iar pe următoarele KK linii câte două numere XiX_i și TiT_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ă
  • N300 000N \leq 300 \ 000
  • K150 000K \leq 150 \ 000
  • ci1 000 000, (i1,2,...,N)c_i \leq 1 \ 000 \ 000, \ (i ∈ {1, 2, ..., N})
  • Ti1 000 000, (i1,2,...,K)T_i \leq 1 \ 000 \ 000, \ (i ∈ {1, 2, ..., K})
  • 1XiN, (i1,2,...,K)1 \leq X_i \leq N, \ (i ∈ {1, 2, ..., K})
  • Pentru 2020 de puncte, 1N2001 \leq N \leq 200

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 11 la poziția 55, timp de 33 secunde (cea mai apropiată plantă din stânga cu capacitatea mai mică decât capacitatea plantei 44 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 44 este planta cu numărul 55, având capacitatea 88).
Robotul va executa comanda a doua și analog, după algoritmul prezentat, va uda plantele de la poziția 66 la poziția 88, timp de o secundă.
Robotul va executa comanda a treia și va uda plantele de la poziția 44 la poziția 88, timp de 22 secunde.
Robotul va executa ultima comandă și va uda plantele de la poziția 11 la poziția 33, timp de 33 secunde.
La sfârșitul operațiilor fiecare plantă va fi udată timp de:
6 6 6 5 5 3 3 3 0 06 \ 6 \ 6 \ 5 \ 5 \ 3 \ 3 \ 3 \ 0 \ 0 secunde.
Se observă că se irosesc 1515 picături pe care le putem redistribui astfel încat să salvam maxim 44 plante.

Log in or sign up to be able to send submissions!