sortall

Time limit: 2.5s Memory limit: 512MB Input: sortall.in Output: sortall.out

Pentru un şir de numere A se defineşte următoarea funcţie de cost:
f(A)=1V1+2V2++KVKf(A) = 1 \cdot V_1 + 2 \cdot V_2 + \dots + K \cdot V_K, unde [V1,V2,,VK][V_1, V_2, \dots, V_K] sunt valorile distincte ale lui AA, ordonate crescător.

Fiind dat un şir de NN numere naturale AA, să se calculeze suma aplicării funcţiei ff pe toate subsecvenţele lui AA (i.e. i=1nj=inf(A[ij])\sum_{i=1}^{n} \sum_{j=i}^{n} f(A[i \dots j])) , unde A[ij]A[i \dots j] este subsecvenţa de la ii la jj).

Date de intrare

Fişierul de intrare sortall.in conţine pe prima linie numărul natural NN. Linia a doua conţine NN numere naturale separate prin spaţiu, reprezentând elementele şirului AA.

Date de ieșire

În fişierul de ieşire sortall.out va conţine răspunsul modulo 1 000 000 0071 \ 000 \ 000 \ 007.

Restricții și precizări

  • 1N50 0001 \leq N \leq 50 \ 000
  • 1ViN1 \leq V_i \leq N
  • Pentru 1010 puncte 1N1 0001 \leq N \leq 1 \ 000
  • Pentru alte 1515 puncte 1N5 0001 \leq N \leq 5 \ 000
  • Pentru alte 2020 de puncte se garantează că valorile din şir sunt distincte

Exemplul 1

sortall.in

3
1 3 2

sortall.out

35

Exemplul 2

sortall.in

8
4 3 4 4 7 1 2 1

sortall.out

861

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