Hide

Problem J
Marsiešu DNS

Languages de en et is ja lt lv no pl ru sv

Cilvēku DNS var reprezentēt kā simbolu virkni, izmantojot četrus alfabēta burtus (A, C, G, T), kur katrs simbols reprezentē atšķirīgus nukleotīdus (attiecīgi – adenīns, citozīns, guanīns, timīns).

Marsiešiem, savukārt, DNS uzbūve ir citāda. Pētījums, kas tika veikts uz marsiešiem, kurus nesen noķēra NASA, atklāja, ka marsiešu DNS sastāv no $K$ atšķirīgiem nukleotīdiem! Tādējādi marsiešu DNS var reprezentēt kā simbolu virkni, ko veido izmantojot $K$ burtu alfabētu.

Pašlaik pētnieku grupa ir ieinteresēta pielietot marsiešu DNS mākslīgā intelekta izveidē. Pētnieki ir pieprasījuši pēc kārtas sekojošu simbolu apakšvirkni no marsiešu DNS simbolu virknes. Pētnieki $R$ nukleotīdiem ir norādījuši minimālo daudzumu – cik reižu vismaz attiecīgajam nukleotīdam ir jāparādās pieprasītajā paraugā.

Jūs esat ieinteresēts atrast īsāko pēc kārtas sekojošo simbolu apakšvirkni no DNS, kas apmierina pētnieku prasības.

Ievaddati

Pirmā rinda satur trīs veselus skaitļus $N$, $K$ un $R$ – kopējais marsieša DNS garums, alfabēta izmērs un nukleotīdu skaits, kam pētnieki ir norādījuši minimālā daudzuma prasību – $1 \le R \le K \le N$.

Otrā rinda satur $N$ veselus skaitļus, kas atdalīti ar tukšumzīmi, – marsiešu DNS simbolu virkne. Virknes $i$-tais skaitlis, $D_ i$, norāda, kurš nukleotīds ir $i$-tajā pozīcijā DNS simbolu virknē. Nukleotīdi ir numurēti sākot ar $0$, t.i. $0 \leq D_ i < K$. Katrs nukleotīds DNS simbolu virknē parādīsies vismaz vienu reizi.

Sekojošās $R$ rindas katra satur divus veselus skaitļus $B$ un $Q$ – nukleotīds un tā pieprasītais minimālais daudzums. Attiecīgi ($0 \le B < K, 1 \le Q \le N$). Neviens nukleotīds nebūs minēts vairāk kā vienu reizi šajās $R$ rindās.

Izvaddati

Izvadiet vienu veselu skaitli – garumu īsākajai pēc kārtas sekojošu simbolu apakšvirknei no DNS, kas apmierina pētnieku prasības. Ja šāda apakšvirkne neeksistē, izvadiet “impossible”.

Ierobežojumi

Jūsu risinājums tiks testēts uz vairākām testu grupām, par katru no tām var iegūt punktus. Katra testu grupa satur vienu vai vairākus testus. Lai iegūtu punktus par testu grupu, jums ir pareizi jāatrisina visi testi šajā grupā. Jūsu beigu vērtējums par uzdevumu būs starp visiem iesūtījumiem lielākais.

Grupa

Punkti

Ierobežojumi

1

16

$1 \le N \le 100, R \le 10$

2

24

$1 \le N \le 4\, 000, R \le 10$

3

28

$1 \le N \le 200\, 000, R \le 10$

4

32

$1 \le N \le 200\, 000$

Paraugu paskaidrojumi

Pirmajā paraugā ir trīs pēc kārtas sekojošu simbolu apakšvirknes ar garumu $2$, kas satur pa vienam 0 un 1 nukleotīdam (tās ir “0 1”, “1 0” un “0 1”), bet nav nevienas apakšvirknes ar garumu $1$. Tādēļ īsākais garums ir $2$.

Otrajā paraugā (unikāla) optimālā pēc kārtas sekojošu simbolu apakšvirkne ir “1 3 2 0 1 2 0”.

Trešajā paraugā nav pietiekams skaits ar 0 tipa nukleotīdiem.

Ievaddatu paraugs 1 Izvaddatu paraugs 1
5 2 2
0 1 1 0 1
0 1
1 1
2
Ievaddatu paraugs 2 Izvaddatu paraugs 2
13 4 3
1 1 3 2 0 1 2 0 0 0 0 3 1
0 2
2 1
1 2
7
Ievaddatu paraugs 3 Izvaddatu paraugs 3
5 3 1
1 2 0 1 2
0 2
impossible