Johnie a început să se joace cu un vector de numere. El dispune iniţial de un vector cu numere întregi (numerotate de la la ) şi poate efectua următoarele operaţii:
- schimbarea elementului de pe poziţia cu un alt număr întreg;
- aflarea subsecvenţei de sumă maximă din inclusă între indicii şi ;
Cerinţă
Ajutaţi-l pe Johnie să efectueze repede operaţiile de mai sus.
Date de intrare
Fisierul maxq.in
conţine pe prima linie numărul reprezentând dimensiunea vectorului. Pe următoarea linie se găsesc elemente reprezentând valorile iniţiale ale vectorului. Urmatoarea linie conţine , reprezentând numărul de operaţii. Pe fiecare dintre următoarele linii sunt descrise cele operaţii în forma următoare:
0 i p
: numărul0
de la început codifică faptul că operaţia curentă este una de schimbare; astfel elementul de pe poziţia a vectorului se înlocuieşte cu numarul întreg ;1 a b
: numărul1
de la început codifică faptul că operaţia curentă este o întrebare; astfel se cere să se afle subsecvenţa de sumă maximă din vector inclusă între indicii şi ;
Date de ieşire
Fişierul maxq.out
trebuie să conţină un număr de linii egal cu numărul de întrebări din fişierul de intrare. Pe linia se cere să se afişeze un singur număr reprezentând suma maximă ce se poate obţine în contextul întrebării din fişierul de intrare ; în cazul în care vor exista doar subsecvenţe de sumă negativă se va afişa 0
.
Restricţii si precizări
- toate elementele vectorului aparţin intervalului
- definim o subsecvenţă ca fiind un şir de termeni consecutivi din vector, iar suma ei se obţine adunând elementele ce o compun
- există cel puţin o întrebare.
- pentru din teste se garantează
Exemplu
maxq.in
5
1 -10 4 -1 9
4
1 0 3
0 1 1
1 0 3
1 2 4
maxq.out
4
6
12
Explicații
Pentru prima întrebare se alege subsecvenţa formată de elementul pe poziţia din vector. Pentru a doua întrebare se aleg primele elemente din vector (elementul de pe poziţia a fost schimbat). Pentru a treia întrebare se aleg toate elementele din intervalul cerut.