Circuit

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

Iaroslav-Menelaos Popescu, zis și Trăznetul Zalăului de Sud, sau (din partea prietenilor) Iaro-Laos, inexplicabil are chef să se uite la maximele subșirurilor subsecvențelor unui șir. De când e mic copil, Iaro-Laos mereu a avut interese neobișnuite.

Mai exact, Iaro-Laos definește
valoarea circuitului complet unui șir a1,…,ana_1, \ldots, a_n, notată circ(a1,…,an)\text{circ}(a_1, \ldots, a_n), ca fiind suma maximelor tuturor subșirurilor lui a1,…,ana_1, \ldots, a_n. Mai exact

circ(a1,…,an)=∑k=1n∑1≤i1<⋯<ik≤nmax⁡(ai1,…,aik).\text{circ}(a_1, \ldots, a_n) = \sum_{k = 1}^n \sum_{1 \leq i_1 < \cdots < i_k \leq n}\max(a_{i_1}, \ldots, a_{i_k}).

Cerință

Se dă un șir de numere a1,…,ana_1, \ldots, a_n. Să se calculeze

∑i=1n∑j=incirc(ai,…,aj)(mod109+7)\sum_{i = 1}^n \sum_{j = i}^n \text{circ}(a_i, \ldots, a_j) \pmod{10^9 + 7}

Date de intrare

Primul rând conține numărul nn. Pe al doilea rând conține numerele a1,…,ana_1, \ldots, a_n.

Date de ieșire

Afișați răspunsul cerut.

Restricții

  • 1≤n≤300 0001 \leq n \leq 300\ 000.
  • 0≤ai≤1 000 000 0000 \leq a_i \leq 1\ 000\ 000\ 000.
# Scor Restricții
1 4 n≤15n \leq 15.
2 5 Șirul este strict crescător.
3 11 n≤300n \leq 300.
4 14 n≤3 000n \leq 3 \ 000.
5 28 n≤80 000n \leq 80 \ 000.
6 38 Fără restricții suplimentare.

Exemplu

stdin

5
5 3 2 4 1

stdout

370

Explicații

Observăm că

val⁡(1)=max⁡(1)=1val⁡(4,1)=max⁡(4)+max⁡(1)+max⁡(4,1)=4+1+4=9val⁡(2,4,1)=max⁡(2)+max⁡(4)+max⁡(2,4)+max⁡(1)+max⁡(2,1)+max⁡(4,1)+max⁡(2,4,1)=2+4+4+1+2+4+4=21val⁡(3,2,4,1)=max⁡(3)+max⁡(2)+max⁡(3,2)+max⁡(4)+max⁡(3,4)+max⁡(2,4)+max⁡(3,2,4)+max⁡(1)+max⁡(3,1)+max⁡(2,1)+max⁡(3,2,1)+max⁡(4,1)+max⁡(3,4,1)+max⁡(2,4,1)+max⁡(3,2,4,1)=3+2+3+4+4+4+4+1+3+2+3+4+4+4+4=49val⁡(5,3,2,4,1)=max⁡(5)+max⁡(3)+max⁡(5,3)+max⁡(2)+max⁡(5,2)+max⁡(3,2)+max⁡(5,3,2)+max⁡(4)+max⁡(5,4)+max⁡(3,4)+max⁡(5,3,4)+max⁡(2,4)+max⁡(5,2,4)+max⁡(3,2,4)+max⁡(5,3,2,4)+max⁡(1)+max⁡(5,1)+max⁡(3,1)+max⁡(5,3,1)+max⁡(2,1)+max⁡(5,2,1)+max⁡(3,2,1)+max⁡(5,3,2,1)+max⁡(4,1)+max⁡(5,4,1)+max⁡(3,4,1)+max⁡(5,3,4,1)+max⁡(2,4,1)+max⁡(5,2,4,1)+max⁡(3,2,4,1)+max⁡(5,3,2,4,1)=5+3+5+2+5+3+5+4+5+4+5+4+5+4+5+1+5+3+5+2+5+3+5+4+5+4+5+4+5+4+5=129val⁡(4)=max⁡(4)=4val⁡(2,4)=max⁡(2)+max⁡(4)+max⁡(2,4)=2+4+4=10val⁡(3,2,4)=max⁡(3)+max⁡(2)+max⁡(3,2)+max⁡(4)+max⁡(3,4)+max⁡(2,4)+max⁡(3,2,4)=3+2+3+4+4+4+4=24val⁡(5,3,2,4)=max⁡(5)+max⁡(3)+max⁡(5,3)+max⁡(2)+max⁡(5,2)+max⁡(3,2)+max⁡(5,3,2)+max⁡(4)+max⁡(5,4)+max⁡(3,4)+max⁡(5,3,4)+max⁡(2,4)+max⁡(5,2,4)+max⁡(3,2,4)+max⁡(5,3,2,4)=5+3+5+2+5+3+5+4+5+4+5+4+5+4+5=64val⁡(2)=max⁡(2)=2val⁡(3,2)=max⁡(3)+max⁡(2)+max⁡(3,2)=3+2+3=8val⁡(5,3,2)=max⁡(5)+max⁡(3)+max⁡(5,3)+max⁡(2)+max⁡(5,2)+max⁡(3,2)+max⁡(5,3,2)=5+3+5+2+5+3+5=28val⁡(3)=max⁡(3)=3val⁡(5,3)=max⁡(5)+max⁡(3)+max⁡(5,3)=5+3+5=13val⁡(5)=max⁡(5)=5\begin{aligned} \operatorname{val}(1) &= \max(1) = 1 \\ \operatorname{val}(4,1) &= \max(4) + \max(1) + \max(4,1) = 4 + 1 + 4 = 9 \\ \operatorname{val}(2,4,1) &= \max(2) + \max(4) + \max(2,4) + \max(1) + \max(2,1) + \max(4,1) + \max(2,4,1) \\ &= 2 + 4 + 4 + 1 + 2 + 4 + 4 = 21 \\ \operatorname{val}(3,2,4,1) &= \max(3) + \max(2) + \max(3,2) + \max(4) + \max(3,4) + \max(2,4) + \max(3,2,4) \\ &\quad + \max(1) + \max(3,1) + \max(2,1) + \max(3,2,1) + \max(4,1) + \max(3,4,1) \\ &\quad + \max(2,4,1) + \max(3,2,4,1) \\ &= 3 + 2 + 3 + 4 + 4 + 4 + 4 + 1 + 3 + 2 + 3 + 4 + 4 + 4 + 4 = 49 \\ \operatorname{val}(5,3,2,4,1) &= \max(5) + \max(3) + \max(5,3) + \max(2) + \max(5,2) + \max(3,2) + \max(5,3,2) \\ &\quad + \max(4) + \max(5,4) + \max(3,4) + \max(5,3,4) + \max(2,4) + \max(5,2,4) + \max(3,2,4) \\ &\quad + \max(5,3,2,4) + \max(1) + \max(5,1) + \max(3,1) + \max(5,3,1) + \max(2,1) + \max(5,2,1) \\ &\quad + \max(3,2,1) + \max(5,3,2,1) + \max(4,1) + \max(5,4,1) + \max(3,4,1) + \max(5,3,4,1) \\ &\quad + \max(2,4,1) + \max(5,2,4,1) + \max(3,2,4,1) + \max(5,3,2,4,1) \\ &= 5 + 3 + 5 + 2 + 5 + 3 + 5 + 4 + 5 + 4 + 5 + 4 + 5 + 4 + 5 + 1 + 5 + 3 + 5 \\ &\quad + 2 + 5 + 3 + 5 + 4 + 5 + 4 + 5 + 4 + 5 + 4 + 5 = 129 \\ \operatorname{val}(4) &= \max(4) = 4 \\ \operatorname{val}(2,4) &= \max(2) + \max(4) + \max(2,4) = 2 + 4 + 4 = 10 \\ \operatorname{val}(3,2,4) &= \max(3) + \max(2) + \max(3,2) + \max(4) + \max(3,4) + \max(2,4) + \max(3,2,4) \\ &= 3 + 2 + 3 + 4 + 4 + 4 + 4 = 24 \\ \operatorname{val}(5,3,2,4) &= \max(5) + \max(3) + \max(5,3) + \max(2) + \max(5,2) + \max(3,2) + \max(5,3,2) \\ &\quad + \max(4) + \max(5,4) + \max(3,4) + \max(5,3,4) + \max(2,4) + \max(5,2,4) \\ &\quad + \max(3,2,4) + \max(5,3,2,4) \\ &= 5 + 3 + 5 + 2 + 5 + 3 + 5 + 4 + 5 + 4 + 5 + 4 + 5 + 4 + 5 = 64 \\ \operatorname{val}(2) &= \max(2) = 2 \\ \operatorname{val}(3,2) &= \max(3) + \max(2) + \max(3,2) = 3 + 2 + 3 = 8 \\ \operatorname{val}(5,3,2) &= \max(5) + \max(3) + \max(5,3) + \max(2) + \max(5,2) + \max(3,2) + \max(5,3,2) \\ &= 5 + 3 + 5 + 2 + 5 + 3 + 5 = 28 \\ \operatorname{val}(3) &= \max(3) = 3 \\ \operatorname{val}(5,3) &= \max(5) + \max(3) + \max(5,3) = 5 + 3 + 5 = 13 \\ \operatorname{val}(5) &= \max(5) = 5 \end{aligned}

Așadar calculăm

1+9+21+49+129+4+10+24+64+2+8+28+3+13+5=370.1 + 9 + 21 + 49 + 129 + 4 + 10 + 24 + 64 + 2 + 8 + 28 + 3 + 13 + 5 = 370.

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