Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2025
Problem description
Jasio uczy się alfabetu (angielskiego w
tym przypadku). Na razie nauczył się trzech pierwszych, wielkich liter
(dla przypomnienia są to kolejno: A, B oraz
C).
Jasio zobaczył na murze napis i od razu zaświtał mu w głowie genialny
pomysł. Chciałby wybrać w tym napisie jak największą liczbę podciągów
ABC. Wybrane podciągi muszą mieć parami rozłączne pozycje
(tzn. niedozwolone jest użycie tej samej pozycji literki do różnych
podciągów).
Dla przypomnienia, mając dany napis, jego podciąg może być uzyskany
poprzez zmazanie z niego pewnej liczby liter (być może żadnej, być może
wszystkich, a być może niektórych) i odczytanie pozostałych liter od
lewej do prawej. Na przykład, słowo tt jest podciągiem
słowa tata, podobnie jak słowo puste, słowo
tata oraz słowo t. Słowa atta,
aaa lub b nie są podciągami słowa
tata.
Napisz program, który: wczyta napis zapisany na murze, wyznaczy
największą liczbę rozłącznych podciągów ABC występujących w
nim i wypisze wynik na standardowe wyjście.
Wejście
W pierwszym (jedynym) wierszu wejścia znajduje się niepusty napis składający się z wielkich liter alfabetu angielskiego. Jest to napis zapisany na murze.
Wyjście
W pierwszym (jedynym) wierszu wyjścia powinna się znaleźć jedna
nieujemna liczba całkowita – liczba znalezionych podciągów
ABC zgodnie z warunkami powyżej.
Ograniczenia
Długość napisu na wejściu nie przekracza 1 000 000 znaków.
Przykład
| Input | Output | Explanation |
|
|
W podanym napisie można wybrać pozycje
trzecią, piątą i siódmą oraz szóstą, ósmą i dziesiątą, aby uzyskać
łącznie dwa rozłączne podciągi |
| Input | Output | |
|
|