Cerință
Se dă precum și un șir de elemente.
Se definește costul unei subsecvente ca fiind rezultatul următorului program:
costul(st,dr):
inițializează variabila S cu un șir vid
pentru i de la st la dr:
Cat timp S nu este vid și ultimul element din S este strict mai mare ca A[i]:
scoate ultimul element din S
adaugă A[i] la finalul lui S
returnează lungimea lui S
Avem posibilitatea să blocăm un element din șir. Notăm cu șirul cu elementul de pe poziția blocat.
Daca blocăm elementul și vrem să calculăm costul unei subsecvențe, dacă cumva ajunge la sfârșitul lui , acesta nu va putea fi scos de nimeni (este blocat).
Se definește frumusețea unui șir ca fiind suma costurilor tuturor subsecvențelor din și se notează cu .
Formal:
Se cere să se calculeze .
Date de intrare
Pe prima linie se găsește un număr natural .
Pe următorul rând se găsesc elementele șirului .
Date de ieșire
Se va afișa un număr natural reprezentând suma dorită. Deoarece această valoare poate fi foarte mare, se cere afișarea restului împărțirii acesteia la .
Restricții și precizări
- ;
- ;
- Pentru teste în valoare de 20 de puncte: ;
- Pentru teste în valoare de 30 de puncte: ;
- Pentru teste în valoare de 20 de puncte: ;
- Pentru teste în valoare de 30 de puncte: fară restricții suplimentare.
Exemplul 1
stdin
7
6 9 2 7 3 5 4
stdout
395