sirag

Time limit: 0.04s
Memory limit: 16MB
Input: sirag.in
Output: sirag.out

În căutarea visului său de preamărire, Lunasorab a dat peste un şirag de perle de lungime N, de diferite tipuri, reprezentate printr-o literă mică a alfabetului latin. Dintre acestea, perlele marcate cu * sunt considerate magice. Ele se pot transforma (şi trebuie transformate) într-o perlă de orice tip nemagic. Acum Lunasorab a primit un număr natural L, şi ştie că dacă poate găsi o subsecvenţă de lungime cat mai mare în şiragul iniţial, formată din concatenarea repetată a unei subsecvenţe de lungime L a şiragului cu ea însăşi, o poate vinde pe piaţa neagră contra unei sume considerabile (Lunasorab nu se sfieşte în a folosi metode neconvenţionale pentru a-şi atinge scopurile).

Deoarece Lunasorab nu stă prea bine la capitolul stiinţe exacte (are alte talente), vă cere vouă ajutorul.

De asemenea, fiind mai neîncrezator din fire, Lunasorab vă cere răspunsul pentru mai multe şiraguri.

Cerinţă

Pentru fiecare şirag din fişierul de intrare, aflaţi cea mai lungă subsecvenţă a şiragului, care se poate obţine prin concatenarea unei subsecvenţe de lungime L.

Date de intrare

Fişierul de intrare sirag.in va conţine pe prima linie numărul natural T, reprezentând numărul de teste.
Pe următoarele 2*T linii vor urma cele T teste, formatate după cum urmează: pe prima linie corespunzătoare unui test vor fi numerele naturale N şi L, separate printr-un singur spatiu, reprezentând lungimea şiragului, respectiv lungimea subsecvenţei folosite în repetiţie. Pe a doua linie se vor afla N caractere, reprezentând tipul celor N perle.

Date de ieşire

Fişierul de ieşire sirag.out va avea T linii, fiecare linie continând un număr natural M, ce reprezintă lungimea celei mai lungi subsecvenţe cu proprietatea menţionată pentru testul respectiv.

Restricţii şi precizări

  • 1 ≤ T ≤ 10
  • 1 ≤ N ≤ 100.000
  • 1 ≤ L ≤ N
  • Tipurile perlelor vor fi reprezentate ori printr-o literă mică a alfabetului latin, ori prin caracterul * pentru perle magice
  • Pentru 10% din teste L = 1
  • Pentru 30% din teste N ≤ 2000

Exemplu

sirag.in

1
6 3
a*cab*

sirag.out

6

Explicaţie

Şirul se poate transforma în abcabc, înlocuind prima perlă magică cu b, iar a doua cu c. Atunci secvenţa abc se repetă de 2 ori, si deci se poate obţine o subsecvenţă de lungime 6 (tot şiragul) cu proprietatea menţionată.

Problem info

ID: 176

Editor: liviu

Author:

Source: ONI 2009 XI-XII: Ziua 1 Problema 3

Tags:

ONI 2009 XI-XII

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