changemin

Time limit: 0.4s Memory limit: 512MB Input: changemin.in Output: changemin.out

Dat fiind un șir de NN numere naturale A1,A2,,ANA_1, A_2, \ldots, A_N, considerăm următorul algoritm, prezentat în pseudocod:

cnt ← 0
score ← 0
pentru i de la 1 la N execută
    min ← ∞
    pentru j de la i la N executa
        daca A[j] < min atunci
            min ← A[j]
            cnt ← cnt + 1
            score ← score + cnt · A[j]
        sfarsit_daca
     sfarsit_pentru
sfarsit_pentru
  • Care este valoarea lui cnt\mathit{cnt} la sfârșitul algoritmului?
  • Care este valoarea lui score\mathit{score} la sfârșitul algoritmului, modulo 666 013666 \ 013?

Date de intrare

Pe prima linie a fișierului de intrare changemin.in se află numerele naturale TT și NN, separate printr-un spațiu, reprezentând cerința care trebuie rezolvată, respectiv numărul de numere ce urmează a fi citite.

Pe următoarea linie se află NN numere naturale separate printr-un spațiu, reprezentând numerele A1,A2,,ANA_1, A_2, \ldots, A_N.

Date de ieșire

Fișierul de ieșire changemin.out va conține:

  • Pentru T=1T = 1: un singur număr natural, reprezentând valoarea lui cntcnt la finalul execuției algoritmului;
  • Pentru T=2T = 2: un singur număr natural, reprezentând valoarea lui scorescore la finalul execuției algoritmului, modulo 666 013666 \ 013.

Restricții și precizări

  • T{1,2}T \in \{1, 2\}
  • 1N1 000 0001 \leq N \leq 1 \ 000 \ 000
  • 1Ai1 000 000 0001 \leq A_i \leq 1 \ 000 \ 000 \ 000 pentru oricare 1iN1 \leq i \leq N
# Punctaj Restricții
1 6 T=1T = 1 și N1 000N \leq 1 \ 000
2 9 T=1T = 1 și Ai2A_i \leq 2
3 21 T=1T = 1, N100 000N \leq 100 \ 000 și Ai200A_i \leq 200
4 24 T=1T = 1
5 4 T=2T = 2 și N1 000N \leq 1 \ 000
6 6 T=2T = 2 și Ai2A_i \leq 2
7 11 T=2T = 2, N100 000N \leq 100 \ 000 și Ai200A_i \leq 200
8 19 T=2T = 2

Exemplul 1

changemin.in

1 5
3 4 2 2 1

changemin.out

11

Explicație

cntcnt este incrementată de 1111 ori pe parcursul execuției algoritmului

Exemplul 2

changemin.in

2 5
3 4 2 2 1

changemin.out

103

Explicație

scorescore este obținută astfel: score=31+22+13+44+25+16+27+18+29+110+111score = 3 \cdot 1 + 2 \cdot 2 + 1 \cdot 3 + 4 \cdot 4 + 2 \cdot 5 + 1 \cdot 6 + 2 \cdot 7 + 1 \cdot 8 + 2 \cdot 9 + 1 \cdot 10 + 1 \cdot 11

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