crescator

Time limit: 0.05s Memory limit: 64MB Input: crescator.in Output: crescator.out

Fie un șir aa de NN numere îıntregi. Trebuie construit un nou șir bb (tot cu NN elemente) astfel:

  • dacă ai>0a_i \gt 0, atunci bi=aib_i = a_i
  • dacă ai=0a_i = 0, atunci bib_i poate avea orice valoare strict pozitivă
  • dacă ai<0a_i \lt 0, atunci bib_i poate avea orice valoare strict pozitivă cu excepția lui ai-a_i

Se garantează că a1a_1 și aNa_N au valori strict pozitive și între oricare două valori strict pozitive se va afla cel mult una strict negativă.

Cerință

Știindu-se șirul aa, să se calculeze numărul de moduri de a forma șirul bb astfel încât acesta să fie crescător (nu neapărat strict). Deoarece acest număr poate fi foarte mare, se va afișa doar restul împărțirii la 109+710^9+7.

Date de intrare

Fișierul de intrare crescator.in conține pe prima linie un număr natural NN și pe cea de-a doua NN numere întregi separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire crescator.out conține pe singura sa linie numărul cerut modulo 109+710^9+7.

Restricții și precizări

  • 1N300 0001 \leq N \leq 300 \ 000
  • 300 000ai300 000−300 \ 000 \leq a_i \leq 300 \ 000
  • Pentru 3535 de puncte, 1N1 0001 \leq N \leq 1 \ 000 și 1 000ai1 000−1\ 000 \leq a_i \leq 1 \ 000.
  • Pentru alte 2020 de puncte, 0ai300 0000 \leq a_i \leq 300 \ 000.

Exemplu

crescator.in

6
1 0 3 0 -4 5

crescator.out

12

Explicație

Cele 1212 șiruri crescătoare bb sunt: (1,1,3,3,3,5)(1, 1, 3, 3, 3, 5), (1,1,3,3,5,5)(1, 1, 3, 3, 5, 5), (1,1,3,4,5,5)(1, 1, 3, 4, 5, 5), (1,1,3,5,5,5)(1, 1, 3, 5, 5, 5), (1,2,3,3,3,5)(1, 2, 3, 3, 3, 5), (1,2,3,3,5,5)(1, 2, 3, 3, 5, 5), (1,2,3,4,5,5)(1, 2, 3, 4, 5, 5), (1,2,3,5,5,5)(1, 2, 3, 5, 5, 5), (1,3,3,3,3,5)(1, 3, 3, 3, 3, 5), (1,3,3,3,5,5)(1, 3, 3, 3, 5, 5), (1,3,3,4,5,5)(1, 3, 3, 4, 5, 5), (1,3,3,5,5,5)(1, 3, 3, 5, 5, 5).

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