Už žádné zbytečné příběhy
-- Vědecká komise, Den před zkouškou
Cerință
Fie două șiruri de caractere de lungime , respectiv . Să se determine cel mai lung subsir comun al celor două șiruri cu proprietatea că diferența dintre pozițiile oricăror două caractere consecutive din subsir este cel puțin și cel mult .
Formal, se cere maxim pentru care există două șiruri de numere și astfel încât:
- Pentru orice ,
- Pentru orice ,
Date de intrare
Pe prima linie a inputului se va găsi un număr , numărul de testcaseuri. Urmează descrierea fiecărui testcase.
Pe prima linie a fiecărui testcase se vor găsi numerele , reprezentând respectiv lungimea primului șir, lungimea celui de-al doilea șir, și limitele diferențelor dintre indici.
Pe a doua, respectiv a treia linie a fiecărui test se vor găsi stringurile și .
Date de ieșire
Pentru fiecare testcase se va afișa un singur număr, pe linii separate --- lungimea maximă a unui subsir comun care respectă proprietățile din enunț.
Restricții și precizări
- , și în particular că , unde și reprezintă suma tuturor -urilor din toate testcase-urile prezente într-un test, respectiv suma tuturor -urilor din toate testcase-urile prezente într-un test;
- ;
- și conțin doar litere mici ale alfabetului latin.
# | Punctaj | Restricții |
---|---|---|
1 | 9 | |
2 | 17 | , și pentru orice testcase |
3 | 16 | , și pentru orice testcase |
4 | 14 | |
5 | 13 | |
6 | 17 | |
7 | 14 | Fără restricții suplimentare. |
Exemplu
stdin
5
6 6 2 4
aaaaaa
aaaaaa
7 8 3 3
axxbxxc
axxxbxxc
7 8 3 4
axxbxxc
axxxbxxc
7 6 1 1
axabaaa
aaaaab
7 9 2 3
ggpxuam
gkxxkszhk
stdout
3
2
3
3
2
Explicație
Pentru primul exemplu, putem lua șirurile:
Pentru al patrulea exemplu, putem lua șirurile: