New York

Time limit: 0.7s Memory limit: 256MB Input: Output:

După ce ai devenit cel mai renumit om de afaceri din Europa, te-ai mutat în New York și dorești să le arăți și americanilor că ești cel mai tare din parcare. Strategia care ți-a adus ție tot succesul este următoarea: cumperi o clădire, o renovezi, iar apoi o vinzi la un preț mai mare.

Există NN clădiri la vânzare. Clădirea ii costă aia_i dolari, dar în urma calculelor tale, dacă o renovezi și o vinzi ulterior poți obține bib_i dolari profit.

O clădire poate fi cumpărată cel mult o dată (deoarece nu ai mai avea ce să renovezi a doua oară), iar ele pot fi cumpărate și vândute în orice ordine.

De asemenea, niciodată nu ai voie să ai un număr negativ de dolari în cont, deci pentru a cumpăra a ii-a clădire, trebuie să ai cel puțin aia_i dolari la momentul achiziționării.

Atenție! NU vinzi clădirea cu bib_i dolari, ci câștigi bib_i dolari (de fapt o vinzi pentru ai+bia_i + b_i) dolari.

Cerință

După o cercetare atentă, ai identificat NN clădiri care ar putea duce la un profit. Încă nu știi exact cât de costisitor va fi să te muți în New York, așadar îți pui QQ întrebări de forma: Dacă aș ajunge cu TT dolari, care e averea maximă (în dolari) pe care aș putea să o dețin la sosirea din New York?

Date de intrare

Pe prima linie se află numărul NN, reprezentând numărul de clădiri care ți-ar putea aduce un eventual profit.

Pe linia i+1i + 1 (1iN1 \leq i \leq N) se află valorile aia_i și bib_i, în această ordine.

Pe linia N+2N + 2 se află numărul QQ, reprezentând numărul de întrebări.

Pe fiecare dintre următoarele QQ linii se află câte un întreg TT, reprezentând numărul inițial de dolari.

Date de ieșire

Se vor afișa QQ linii. Pe a ii-a linie se va afla răspunsul la a ii-a întrebare.

Restricții și precizări

Atenție!\textcolor{red}{Atenție!} Din cauza numărului mare de date de intrare, respectiv ieșire, vă recomandăm să adăugați următoarele linii de cod la începutul funcției main().

ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
  • 1N200 0001 \leq N \leq 200 \ 000
  • 1Q1 000 0001 \leq Q \leq 1 \ 000 \ 000
  • 1ai,bi1091 \leq a_i, b_i \leq 10^9
  • 1T1091 \leq T \leq 10^9
# Punctaj Restricții
1 6 N=1,Q100N = 1, Q \leq 100
2 21 N,Q5 000N, Q \leq 5 \ 000
3 18 N5 000N \leq 5 \ 000
4 16 ai5 000a_i \leq 5 \ 000
5 39 Fără alte restricții

Exemplul 1

stdin

3
3 4
1 1
9 6
10
1 2 3 4 5 6 7 8 9 10 

stdout

2
7
8
15
16
17
18
19
20
21

Explicație

T=1T = 1: Pot cumpăra și renova clădirea 22. Pot deoarece a2=1a_2 = 1, deci Ta2T \geq a_2. Inițial aveam un dolar, iar acum am 1+b2=1+1=21 + b_2 = 1 + 1 = 2

T=2T = 2: Inițial, cumpăr și renovez clădirea 22. Acum, am 33 dolari, deci pot cumpăra și clădirea 11. După ce vând clădirea 11 voi avea 3+4=73 + 4 = 7 dolari.

T=3T = 3: Similar cu T=2T = 2, voi cumpăra clădirile 22 și 11 în ordinea aceasta. Voi avea 3+1+4=83 + 1 + 4 = 8 dolari.

T=4T = 4: După ce cumpăr clădiriile 2,12, 1 am 99 dolari. Astfel pot cumpăra clădirea 33, iar în final voi avea 4+1+4+6=154 + 1 + 4 + 6 = 15 dolari.

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