NYSE

Time limit: 1.1s Memory limit: 256MB Input: nyse.in Output: nyse.out

Pe Bursa de Valori din New York, cunoscută și sub numele de NYSE – New York Stock Exchange, există un singur tip de acțiune ce se poate tranzacționa. Se cunoaște prețul zilnic al unei acțiuni de acest tip pentru o perioadă de NN zile consecutive: pip_i reprezintă prețul unei acțiuni în ziua i (1iN)i \ (1 \leq i \leq N ), exprimat în dolari.

William urmărește ce se întâmplă pe bursă, iar în fiecare zi ii poate tranzacționa, în total, cel mult LiL_i acțiuni. Prin urmare, dacă în ziua ii vinde SS acțiuni (la prețul de pip_i dolari fiecare) și cumpără BB acțiuni (la prețul de pip_i dolari fiecare), trebuie respectate inegalitățile: 0S0 \leq S, 0B0 \leq B și 0S+BLi0 \leq S + B \leq L_i. De asemenea, numerele SS și BB trebuie să fie numere naturale. Atenție: nu este nevoie ca William să dețină cel puțin o acțiune pentru a putea vinde una. De exemplu, este posibil ca prima tranzacție pe care William o efectuează să fie vânzarea unei (sau a mai multor) acțiuni.

Pentru orice ii, spunem că, la finalul zilei ii, William și-a închis pozițiile, dacă numărul de acțiuni cumpărate în primele ii zile este egal cu numărul de acțiuni vândute în primele ii zile (incluzând și eventualele tranzacții efectuate în ziua ii). În urma unei serii de tranzacții, profituleste egal cu diferența dintre suma totală de dolari obținută din vânzarea acțiunilor și respectiv suma totală de dolari utilizată pentru cumpărarea acțiunilor. William are nevoie să răspundă, în ordine, la QQ întrebări de forma: considerându-se o valoare naturală xx, să se determine indicele minim al unei zile j (j \ (unde 1jN)1 \leq j \leq N ), astfel încât după o serie de tranzacții în zilele 11, 22, . . . , jj, profitul obținut să fie de cel puțin xx dolari, iar el să își fi închis pozițiile la finalul zilei jj.
Dacă nu există niciun astfel de indice jj, atunci se consideră că j=1j = −1. William știe încă de la începutul primei zile prețurile pentru întreaga perioadă de NN zile, astfel că își poate planifica optim tranzacțiile, în funcție de fiecare întrebare primită.

Cerință

Scrieți un program care, cunoscând NN , prețul zilnic al unei acțiuni pentru cele NN zile, precum și limitele zilnice de tranzacționare, răspunde corect la QQ întrebări de forma descrisă. Cele QQ întrebări sunt independente între ele, în sensul că pentru fiecare întrebare se poate alege o altă serie de tranzacții din care să rezulte cea mai mică valoare a lui jj, în cazul în care aceasta există (când j1j \neq −1).

Date de intrare

Fișierul de intrare nyse.in conține pe prima linie numărul natural NN . Pe următoarea linie se află NN numere naturale, reprezentând, în ordine: p1p_1, p2p_2, …, pNp_N. Pe următoarea linie se află NN numere naturale, reprezentând, în ordine: L1L_1, L2L_2, …, LNL_N . Pe următoarea linie se află numărul natural QQ. Pe următoarele QQ linii se află întrebările, câte o întrebare pe fiecare linie. O linie care reprezintă o întrebare conține un singur număr natural xx, cu semnificația de mai sus. Numerele aflate pe aceeași linie a fișierului de intrare sunt separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire nyse.out conține QQ linii. Pe cea de a kk-a linie se află răspunsul pentru cea de a kk-a întrebare descrisă în fișierul de intrare (unde 1kQ1 \leq k \leq Q).

Restricții și precizări

  • 1N900 0001 \leq N \leq 900 \ 000 și 1Q100 0001 \leq Q \leq 100 \ 000.
  • 1pi1 000 000 0001 \leq p_i \leq 1 \ 000 \ 000 \ 000 și 0Li1 0000 \leq L_i \leq 1 \ 000, pentru fiecare ii: 1iN1 \leq i \leq N.
  • 0x10180 \leq x \leq 10^{18}, pentru fiecare dintre cele QQ întrebări.
  • În fiecare zi, William are și opțiunea de a nu face tranzacții.
# Punctaj Restricții
1 4 p1=p2=...=pNp_1 = p_2 = . . . = p_N
2 12 N1 000N \leq 1 \ 000 și L1=L2=...=LN=1L_1 = L_2 = . . . = L_N = 1
3 17 N1 000N \leq 1 \ 000
4 11 max(p1,p2,...,pN)( p_1, p_2, . . . , p_N ) − min(p1,p2,...,pN)25( p_1, p_2, . . . , p_N ) \leq 25
5 18 99 000N100 00099 \ 000 \leq N \leq 100 \ 000
6 14 N>100 000N > 100 \ 000 și L1=L2=...=LN=1L_1 = L_2 = . . . = L_N = 1
7 24 Fără restricții suplimentare

Exemplul 1

nyse.in

2
10 5
3 3
1
14

nyse.out

2

Explicație

Se cunoaște prețul acțiunii pentru o perioadă de două zile consecutive (N=2)(N = 2). În prima zi, o acțiune valorează p1=10p_1 = 10 dolari, iar în cea de a doua zi, o acțiune valorează p2=5p_2 = 5 dolari. Atât în prima zi, cât și în cea de a doua, se pot tranzacționa cel mult trei acțiuni (L1=L2=3)(L_1 = L_2 = 3).
Avem de răspuns la o singură întrebare (Q=1)(Q = 1), pentru care x=14x = 14.
În cadrul întrebării, William alege să vândă trei acțiuni (la prețul de 1010 dolari fiecare) în prima zi și apoi să cumpere trei acțiuni (la prețul de 55 dolari fiecare) în a doua zi. Astfel, la finalul celei de a doua zile, numărul de acțiuni cumpărate este egal cu numărul de acțiuni vândute, adică trei, deci William și-a închis pozițiile.
Profitul maxim obținut după primele două zile este egal cu: 31035=153 \cdot 10 − 3 \cdot 5 = 15 dolari.

Exemplul 2

nyse.in

5
10 1 20 21 25
1 1 1 1 1
1
20

nyse.out

4

Explicație

Profitul maxim care se poate obține la finalul celei de a cincea zile este de 3535 de dolari.

Exemplul 3

nyse.in

5
10 12 5 113 343
1 2 3 2 1
4
0
1000
345
21

nyse.out

1
-1
5
4

Explicație

Profitul maxim care se poate obține la finalul celei de a cincea zile este de 556556 de dolari.

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