| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 7 초 (추가 시간 없음) | 1024 MB | 0 | 0 | 0 | 0.000% |
Na pewno słyszeliście kiedyś o wyrażeniach nawiasowych, ale na wszelki wypadek, w ramach odświeżenia informacji, przypomnijmy sobie ich definicję:
Nawiasowością słowa złożonego jedynie ze znaków ‘(’ i ‘)’ nazwiemy liczbę jego podsłów, które są poprawnymi wyrażeniami nawiasowymi. Każde podsłowo liczymy tutaj tyle razy ile ono występuje w danym słowie.
Dane jest słowo długości n złożone jedynie ze znaków ‘(’ i ‘)’, oraz liczba k. Słowo to niekoniecznie musi być poprawnym wyrażeniem nawiasowym. Twoim zadaniem jest podzielić je na k niepustych przedziałów (każdy znak musi należeć do dokładnie jednego przedziału) tak, by zminimalizować sumę nawiasowości powstałych po podziale słów.
W pierwszym wierszu standardowego wejścia znajdują się dwie liczby całkowite n oraz k (1 ≤ k ≤ n ≤ 100 000), oznaczające odpowiednio długość słowa i liczbę przedziałów na które chcemy je podzielić.
W drugim wierszu znajduje się słowo długości n złożone jedynie ze znaków ‘(’ oraz ‘)’.
W jedynym wierszu wyjścia powinna znaleźć się jedna liczba całkowita, oznaczająca minimalną możliwą do osiągnięcia sumę nawiasowości k słów przy optymalnym podziale wejściowego słowa.
15 2 ())(()())()(())
6
15 3 ())(()())()(())
3
Contest > Algorithmic Engagements > PA 2022 5-4번