rectangles

Time limit: 0.24s Memory limit: 128MB Input: Output:

Se consideră un șir de NN numere naturale. Numim rectangle-sequence orice secvență continuă din șir (formată din elemente situate pe poziții consecutive) care conține cel puțin două elemente. Fiecare rectangle-sequence este caracterizată de un dreptunghi cu lungimile laturilor egale cu cele mai mari două elemente din cadrul ei.

Cerința

Să se calculeze restul împărțirii sumei ariilor dreptunghiurilor ce caracterizează toate rectangle-sequences din șir la numărul 109+710^9+7

Date de intrare

Prima linie contine numărul natural nenul NN, reprezentând numărul elementelor din șir, iar linia a doua conține, separate prin câte un spațiu, cele NN elemente. Întrucât volumul datelor de intrare este foarte mare, vă recomandăm, în cazul în care folosiți pentru citire biblioteca iostream din standardul C++, să adaugați la începutul funcției main urmatoarele instrucțiuni:

std::iosbase::sync_with_stdio(false);
std::cin.tie(0);

Date de ieșire

Ieșirea conține numărul de determinat, modulo 109+710^9+7.

Restricții și precizări

  • 1N1 000 0001 \leq N \leq 1 \ 000 \ 000
  • 1orice element din șir1 000 000 0001 \leq \text{orice element din șir} \leq 1 \ 000 \ 000 \ 000
# Punctaj Restricții
1 13 1N2 0001 \leq N \leq 2 \ 000
2 23 1N100 0001 \leq N \leq 100 \ 000 și există cel mult 100100 de numere distincte în șir.
3 27 1N200 0001 \leq N \leq 200 \ 000
4 37 Nu există restricții suplimentare

Exemplu

stdin

3
2 3 1

stdout

15

Explicație

Sunt 33 rectangle-sequences: (2,3)(2, 3); (2,3,1)(2, 3, 1); (3,1)(3, 1). Ariile celor trei deptunghiuri ce le caracterizează sunt: 6,6,36, 6, 3.

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