Nu aveti permisiuni pentru a descarca fisierul grader_test4.ok
Diferente pentru problema/shiroeseq intre reviziile #3 si #13
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="shiroeseq") ==
Poveste şi cerinţă...
Activitatea nouă a lui Shiroe implică încercarea de a detecta anumite fraze memorabile în unele fluxuri de date criptate.
Mai exact, lui i se dă un şir $S$ şi un set de $K$ pattern-uri Pi (cu $|P[~i~]|$ ≤ $|S|$), toate conţinând numai litere mici. Pentru fiecare pattern $P$, spunem că un substring
$S'$ din $S$ "conţine puternic" $P$ dacă şi numai dacă fiecare subsecventa $S''$ de lungime $|P|$ din $S'$ este o anagrama a lui $P$. Pentru a afla cât de des apare fiecare pattern în S, Shiroe trebuie să găsească, pentru fiecare P[~i~], lungimea lui $S'[~i~]$, cea mai lungă subsecventa a lui S care "conţine puternic" $P[~i~]$.
Reţineţi că un substring al unui şir $S$ = <s[~1~], ..., s[~n~]> este un alt şir $P$ = <p[~1~], ..., p[~k~]> astfel încât să existe o poziţie $t$ (cu $0$ ≤ $t$ ≤ $n - k$) astfel încât $s[~(t + x)~]$ = $p[~x~]$ pentru toate $x$ ∈ {1, 2, 3, ..., $k$}.
Reţineţi că o anagramă a unui şir $S$ este orice alt şir $P$ care poate fi format din $S$ prin permutarea caracterelor lui $S$.
h2. Date de intrare Fişierul de intrare $shiroeseq.in$ contine pe prima linie $T$, numărul de teste. Prima linie a unui test conţine $S$. A doua linie a unui test conţine $K$.
Următoarele $K$ linii ale fiecărui test conţin pattern-urile P~i~, in ordine.
Următoarele $K$ linii ale fiecărui test conţin pattern-urile P[~i~], in ordine.
h2. Date de ieşire
În fişierul de ieşire $shiroeseq.out$ ...
În fişierul de ieşire $shiroeseq.out$ se afla răspunsurile pentru fiecare test în ordine. Răspunsul pentru un test constă în $K$ linii, fiecare dintre ele reprezentand lungimea substringului cerut pattern-ului respectiv.
h2. Restricţii * $1$ ≤ $T$ ≤ $10$
* $1$ ≤ $|S|$ ≤ $50.000$ * $1$ ≤ $|P1| + ... + |PK|$ ≤ $50.000$
h2. Exemplu table(example). |_. shiroeseq.in |_. shiroeseq.out |
| This is some text written on multiple lines. | This is another text written on multiple lines.
| 2 ababab 2 ab abab abcaxa 3 a yyy ax | 6 6 1 2 3
|
h3. Explicaţie ...
== include(page="template/taskfooter" task_id="shiroeseq") ==
