mister

Time limit: 0.3s Memory limit: 64MB Input: mister.in Output: mister.out

Se dă următorul algoritm misterios, care are ca date de intrare numerele naturale NN și KK, precum și un șir de NN numere naturale AA (A1,A2,,ANA_1, A_2, \ldots, A_N), iar ca date de ieșire termenii șirului BB (B1,B2,,BNB_1, B_2, \ldots, B_N). De asemenea, algoritmul utilizează și un șir auxiliar TT (T0,T1,,TN1T_0, T_1, \ldots, T_{N-1}).

1: x ← 0
2: y ← -1
3: pentru i ← 1, N execută
4:     cât timp x ≤ y și A_i > T_y execută
5:         y ← y - 1
6:     sfârșit cât timp
7:     dacă x ≤ y și i - K ≥ 1 și T_x = A_{i-K} atunci
8:         x ← x + 1
9:     sfârșit dacă
10:    y ← y + 1
11:    T_y ← A_i
12:    B_i ← y - x + 1
13: sfârșit pentru

Cerință

Dându-se NN, KK și cei NN termeni ai unui șir BB, să se determine termenii unui șir AA, cu 1AiN1 \le A_i \le N, pentru orice ii de la 11 la NN, care ar trebui citiți ca date de intrare în cadrul algoritmului misterios, astfel încât în urma executării acestuia să se obțină ca date de ieșire termenii șirului BB dat. Dacă există mai multe soluții, oricare dintre acestea este considerată validă.

Date de intrare

Fișierul de intrare mister.in conține pe prima linie numerele naturale NN și KK, cu semnificația din enunț, iar pe a doua linie NN numere naturale, reprezentând termenii șirului BB. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire mister.out va conține NN numere naturale pe o singură linie, separate prin câte un spațiu, reprezentând, în ordine, termenii șirului AA.

Restricții și precizări

  • 1KN200 0001 \le K \le N \le 200 \ 000;
  • 1BiN1 \le B_i \le N, pentru oricare i=1,,Ni = 1, \ldots, N, și se garantează că există cel puțin o soluție validă.
# Punctaj Restricții
1 15 N=4N = 4
2 50 Bi=1B_i = 1, pentru 1iN1 \le i \le N
3 10 K=2K = 2
4 12 K=NK = N
5 4 N2 000N \le 2 \ 000
6 4 K100K \le 100
7 5 fără alte restricții

Exemplul 1

mister.in

5 3
1 1 1 1 1

mister.out

1 2 3 4 5

Explicație

Pentru primul exemplu un posibil șir AA, pentru care algoritmul va genera șirul B=(1,1,1,1,1)B = (1, 1, 1, 1, 1), este A=(1,2,3,4,5)A = (1, 2, 3, 4, 5).

Exemplul 2

mister.in

5 3
1 2 2 2 1

mister.out

5 2 4 3 5

Explicație

Pentru al doilea exemplu ni se cere să găsim un șir AA valid care ar produce B=(1,2,2,2,1)B = (1, 2, 2, 2, 1). Șirul A=(5,2,4,3,5)A = (5, 2, 4, 3, 5) din exemplul de ieșire este doar una dintre soluțiile posibile. O altă soluție validă pentru același șir BB ar fi putut fi, de exemplu, A=(4,1,3,2,5)A = (4, 1, 3, 2, 5). Orice soluție care respectă condițiile 1AiN1 \le A_i \le N și generează șirul BB în urma rulării algoritmului misterios va fi acceptată.

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