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,…,an, notată circ(a1,…,an), ca fiind suma maximelor tuturor subșirurilor lui a1,…,an. Mai exact
circ(a1,…,an)=k=1∑n1≤i1<⋯<ik≤n∑max(ai1,…,aik).Cerință
Se dă un șir de numere a1,…,an. Să se calculeze
i=1∑nj=i∑ncirc(ai,…,aj)(mod109+7)Date de intrare
Primul rând conține numărul n. Pe al doilea rând conține numerele a1,…,an.
Date de ieșire
Afișați răspunsul cerut.
Restricții
- 1≤n≤300 000.
- 0≤ai≤1 000 000 000.
# |
Scor |
Restricții |
1 |
4 |
n≤15. |
2 |
5 |
Șirul este strict crescător. |
3 |
11 |
n≤300. |
4 |
14 |
n≤3 000. |
5 |
28 |
n≤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)val(4,1)val(2,4,1)val(3,2,4,1)val(5,3,2,4,1)val(4)val(2,4)val(3,2,4)val(5,3,2,4)val(2)val(3,2)val(5,3,2)val(3)val(5,3)val(5)=max(1)=1=max(4)+max(1)+max(4,1)=4+1+4=9=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=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=49=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=129=max(4)=4=max(2)+max(4)+max(2,4)=2+4+4=10=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=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=64=max(2)=2=max(3)+max(2)+max(3,2)=3+2+3=8=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=max(3)=3=max(5)+max(3)+max(5,3)=5+3+5=13=max(5)=5Așadar calculăm
1+9+21+49+129+4+10+24+64+2+8+28+3+13+5=370.