3max

Time limit: 0.2s Memory limit: 64MB Input: 3max.in Output: 3max.out

După ce a făcut profit lucrând la fabrica de lângă Arad, Dorel şi-a schimbat din nou locul de muncă şi acum s-a angajat la o companie ce produce batoane energizante.

Până în acest moment compania a produs N batoane care, aflându-se pe banda de producţie, sunt dispuse în linie. Pentru fiecare baton se ştie numărul de calorii pe care o persoană le câştigă dacă mănâncă acel baton (din pacate, compania nu este specializată în producerea de batoane energizante şi de accea pot exista şi batoane pentru care numărul de calorii câştigate este negativ).

Dorel doreşte să se înfrupte cu o parte din batoane, dar pentru a nu stârni suspiciuni, a hotărât că va alege trei subsecvenţe disjuncte din secventa de N batoane pe care le va mânca. Notăm aceste subsecvenţe cu [i1,j1],[i2,j2],[i3,j3][i_1, j_1], [i_2, j_2], [i_3, j_3], (1i1j1<i2j2<i3j3N)(1 \leq i_1 \leq j_1 < i_2 \leq j_2 < i_3 \leq j_3 \leq N).

Desigur, menirea batoanelor energizante este de a avea cât mai multe calorii, aşadar Dorel doreşte ca suma caloriilor produse de batoanele din cele trei subsecvenţe să fie cât mai mare. Totusi, Dorel are nişte constrângeri privind subsecvenţa din mijloc. Aceasta trebuie să fie inclusă într-un anumit interval [x,y][x, y] (aşadar, xi2j2yx \leq i_2 \leq j_2 \leq y).

Cerință

Fiind date MM intervale de forma [x,y][x, y] trebuie să afişaţi numărul maxim de calorii pe care le poate obţine Dorel, dacă alege trei subsecvenţe conform regulilor de mai sus.

Date de intrare

Pe prima linie a fişierului 3max.in se va afla NN, numărul de batoane şi MM, numărul de întrebări. Următoarea linie conţine NN numere întregi, al ii-lea din aceste numere reprezentând numărul de calorii al batonului ii. Următoarele MM linii conţin fiecare două numere întregi xx, yy, reprezentând o constrângere pentru subsecvenţa din mijloc.

Date de ieșire

Cele MM linii ale fişierului 3max.out vor conţine MM numere naturale, răspunsurile la cele MM întrebări.

Restricții și precizări

  • 1N50 0001 \leq N \leq 50 \ 000
  • 1M100 0001 \leq M \leq 100 \ 000
  • 1xyN1 \leq x \leq y \leq N
  • Numărul de calorii pe care îl conţine un baton este cuprins în intervalul [106,106][-10^6, 10^6].
  • Atenţie! Daca o subsecvenţa aleasa are suma negativă, Dorel considera ca are suma 00.
  • Atenţie! Dorel este obligat sa aleaga 3 subsecvente, iar daca nu va putea alege, se va afisa valoarea 00.
  • O subsecvenţă a unui şir se defineşte ca fiind o submulţime de elemente ale şirului aflate pe poziţii consecutive.
  • Celelalte două subsecvenţe se pot intersecta cu intervalul [x,y][x, y] atata timp cât respectă toate proprietăţile.

Exemplul 1

3max.in

7 2
2 -5 6 3 2 -4 3
2 3
3 6

3max.out

13
16

Explicație

Se aleg subsecvenţele [1,1],[3,3],[4,5][1, 1], [3, 3], [4, 5], respectiv [1,1],[3,5],[7,7][1, 1], [3, 5], [7, 7].

Exemplul 2

3max.in

4 1
-10 2 3 -10
1 4

3max.out

5

Explicație

Se aleg subsecvenţele [1,1],[2,3],[4,4][1, 1], [2, 3], [4, 4]. Cum subsecventele [1,1][1, 1] si [4,4][4, 4] au suma negativa,
Dorel le considera ca avand suma 0, deci rezultatul este 0+5+0=50 + 5 + 0 = 5.

Exemplul 3

3max.in

3 1
-1 -2 -3
2 2

3max.out

0

Explicație

Se aleg subsecvenţele [1,1],[2,2],[3,3][1, 1], [2, 2], [3, 3].

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