Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2009-04-18 11:57:46.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:decod.in, decod.outSursăONI 2009, Baraj Gimnaziu
AutorAna IntunericAdăugată deandrici_cezarAndrici Cezar andrici_cezar
Timp execuţie pe test0.075 secLimită de memorie4736 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Decod

Numim k-p-platou un număr n de forma c1c2...cp cu proprietatea că cifrele sale sunt distincte şi aparţin mulţimii { k,k+1,...,k+p-1 }. O α-codificare constă în transformarea numărului n în numărul d1d2...dp, unde di = 1+numărul de cifre din stânga cifrei ci care sunt mai mici decât ci pentru 1ip . Aplicând o α-codificare unui număr obţinem un α-cod .
Fie s un şir format din secvenţe de cifre, în care fiecare secvenţă are aceeaşi lungime p . Un val este o succesiune de astfel de secvenţe în care orice secvenţă care este un α-cod, este urmată de o secvenţă care nu este un α-cod şi orice secvenţă care nu este un α-cod , este urmată de o secvenţă care este un α-cod , cu excepţia ultimei secvenţe. Un val începe obligatoriu cu o secvenţă ce reprezintă un α-cod şi se termină cu o secvenţă care nu este un α-cod . Primul caracter al unui val se poate afla pe o poziţie din s care aparţine mulţimii { 1,1+p,1+2p,1+3p,… }.

Cerinţe

Scrieţi un program care:
a) cunoscând numerele k , p şi un α-cod , determină k-p-platoul căruia i s-a aplicat α-codificarea .
b) pentru un şir de cifre s dat, determină lungimea celui mai lung val .

Date de intrare

Fişierul de intrare decod.in conţine:
• pe prima linie cifrele k şi p separate printr-un spaţiu
• pe a doua linie un α-cod a unui k-p-platou
• pe a treia linie un şir de cifre s

Date de ieşire

Fişierul de ieşire decod.out va conţine:
• pe prima linie k-p-platoul căruia i s-a aplicat α-codificarea
• pe a doua linie lungimea celui mai lung val

Restricţii

1k9
1p9
k+p-19
1di9
• şirul s are cel mult 800000 de caractere

Exemplu

decod.indecod.out
3 5
12124
1111012124100111234511151
57346
20

Explicaţie

Numărul 57346 este un 3-5-platou , deoarece cifrele sale aparţin mulţimii { 3,4,5,6,7 }. Aplicându-i o
α-codificare se obţine 12124 , 1 deoarece în stânga lui 5 nu există nici o cifră mai mică decât 5 ( 1+0 ), 2 deoarece în stânga lui 7 există o cifră mai mică decât 7 ( 1+1 ) etc.
În şirul 1111012124100111234511151 avem un val de lungime 20 .

decod.indecod.out
8 2
12
10121011101012101110111011101110
89
20

Explicaţie

Numărul 12 este un α-cod a numărului 89.
În şirul 10121011101011101110111011201110 avem două valuri, iar valul maxim are lungimea egală cu 20.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?