In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Bajtazar pracuje w Bajtockim Centrum Biologii Obliczeniowej. Właśnie dostał do analizy długą sekwencję złożoną z genomów. Jego zadaniem jest znalezienie często powtarzających się cyklicznych fragmentów tej sekwencji.
Sekwencję Bajtazara można reprezentować jako słowo złożone z wielkich liter alfabetu angielskiego. Cyklicznym fragmentem słowa nazywamy takie słowo , że wszystkie obroty cykliczne1 słowa są podsłowami słowa .
Bajtazara interesują cykliczne fragmenty słowa o ustalonej długości . Dla danego cyklicznego fragmentu słowa , definiujemy liczbę cyklicznych wystąpień w jako łączną liczbę wystąpień wszystkich różnych obrotów cyklicznych słowa w słowie . Bajtazar chciałby znaleźć w słowie cykliczny fragment długości , dla którego liczba cyklicznych wystąpień jest jak największa. Napisz program, który pomoże mu w tym zadaniu.
W pierwszym wierszu wejścia znajdują się dwie liczby całkowite oraz (, ), oznaczające długość sekwencji genomów oraz liczbę przypadków testowych do rozważenia. W drugim wierszu znajduje się -literowe słowo złożone z liter 'A''Z' stanowiące reprezentację sekwencji. Dalej następuje wierszy, z których -ty zawiera jedną liczbę całkowitą (), oznaczającą rozważaną długość cyklicznych fragmentów sekwencji.
Twój program powinien wypisać wierszy. Każdy z tych wierszy powinien zawierać jedną liczbę całkowitą, oznaczającą maksymalną liczbę cyklicznych wystąpień -literowego cyklicznego fragmentu słowa .
Dla danych wejściowych:
16 2 AABAABACDABAABAA 6 3
poprawną odpowiedzią jest:
4 10
Wyjaśnienie do przykładu: Cykliczny fragment AABAAB występuje w podanym słowie 4 razy: raz jako AABAAB, dwa razy jako ABAABA i raz jako BAABAA. Cykliczny fragment AAB występuje w tym słowie 10 razy.
Autor zadania: Jakub Radoszewski.
1. Obrotem cyklicznym słowa nazywamy słowo powstałe przez (potencjalnie wielokrotne) przeniesienie ostatniej litery słowa na początek. Przykładowo, wszystkimi obrotami cyklicznymi słowa ABAABA są: ABAABA, BAABAA oraz AABAAB. Słowo nazywamy podsłowem słowa , jeśli występuje w jako spójny kawałek.