decod

Time limit: 0.1s Memory limit: 4MB Input: decod.in Output: decod.out

Numim kk - pp - platou un număr nn de forma c1c2cpc_1 c_2 \dots c_p cu proprietatea că cifrele sale sunt distincte şi aparţin mulţimii {k\{k, k+1k+1, \dots, k+p1}k+p-1\}. O α\alpha-codificare constă în transformarea numărului nn în numărul d1d2dpd_1 d_2 \dots d_p, unde did_i = 11 + numărul de cifre din stânga cifrei cic_i care sunt mai mici decât cic_i pentru 1ip1 \leq i \leq p. Aplicând o α\alpha-codificare unui număr obţinem un α\alpha-cod.

Fie ss un şir format din secvenţe de cifre, în care fiecare secvenţă are aceeaşi lungime pp. Un val este o succesiune de astfel de secvenţe în care orice secvenţă care este un α\alpha-cod, este urmată de o secvenţă care nu este un α\alpha-cod şi orice secvenţă care nu este un α\alpha-cod, este urmată de o secvenţă care este un α\alpha-cod, cu excepţia ultimei secvenţe. Un val începe obligatoriu cu o secvenţă ce reprezintă un α\alpha-cod şi se termină cu o secvenţă care nu este un α\alpha-cod.

Primul caracter al unui val se poate afla pe o poziţie din ss care aparţine mulţimii {1\{1, 1+p1+p, 1+2p1+2p, 1+3p1+3p, }\dots\}.

Cerinţe

Scrieţi un program care:

  1. cunoscând numerele kk, pp şi un α\alpha-cod, determină kk - pp-platoul căruia i s-a aplicat α\alpha-codificarea.
  2. pentru un şir de cifre ss dat, determină lungimea celui mai lung val.

Date de intrare

Fişierul de intrare decod.in conţine:

  • pe prima linie cifrele kk şi pp separate printr-un spaţiu
  • pe a doua linie un α\alpha-cod a unui kk - pp - platou
  • pe a treia linie un şir de cifre ss

Date de ieşire

Fişierul de ieşire decod.out va conţine:

  • pe prima linie kk - pp - platoul căruia i s-a aplicat α\alpha-codificarea
  • pe a doua linie lungimea celui mai lung val

Restricții și precizări

  • 1k91 \leq k \leq 9
  • 1p91 \leq p \leq 9
  • k+p19k + p - 1 \leq 9
  • 1di91 \leq d_i \leq 9
  • şirul ss are cel mult 800 000800 \ 000 de caractere
  • Pentru rezolvarea cerinţei 11 se acordă 40%40\% din punctaj şi pentru cerinţele 11 şi 2 100%2 \ 100\% din punctaj.

Exemplul 1

decod.in

3 5
12124
1111012124100111234511151

decod.out

57346
20

Explicație

Numărul 5734657346 este un 33 - 55 - platou, deoarece cifrele sale aparţin mulţimii {33, 44, 55, 66, 77}. Aplicându-i o α\alpha - codificare se obţine 12 12412 \ 124, 11 deoarece în stânga lui 55 nu există nici o cifră mai mică decât 55 (1+01 + 0), 22 deoarece în stânga lui 77 există o cifră mai mică decât 77 (1+11 + 1) etc.

În şirul 1111012124100111234511151 avem un val de lungime 2020.

Exemplul 2

decod.in

8 2
12
10121011101012101110111011101110

decod.out

89
20

Explicație

Numărul 1212 este un α\alpha-cod a numărului 8989.
În şirul 10121011101011101110111011201110 avem două valuri, iar valul maxim are lungimea egală cu 2020.

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