JJOOII 2 (JJOOII 2)
日本語
Language
Contribute a translation- Time limit
- 2000 ms
- Memory limit
- 256 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
ビ太郎は友人のビバ子から誕生日プレゼントに J,O,I の \(3\) 種類の文字からなる長さ \(N\) の文字列 \(S\) をもらった.
\(K\) を \(1\) 以上の整数とする.\(K\) 個の文字 J,\(K\) 個の文字 O,\(K\) 個の文字 I をこの順に並べた文字列をレベル \(K\) の JOI 文字列と呼ぶことにする.例えば,JJOOII はレベル \(2\) の JOI 文字列である.
ビ太郎はレベル \(K\) の JOI 文字列が好きなので,以下の \(3\) 種類の操作を任意の回数,任意の順番で行うことで,文字列 \(S\) をレベル \(K\) の JOI 文字列に変換することにした.
- 操作 \(1\) 文字列 \(S\) の先頭の文字を消す.
- 操作 \(2\) 文字列 \(S\) の末尾の文字を消す.
- 操作 \(3\) 文字列 \(S\) の先頭でも末尾でもない文字を消す.
操作 \(3\) を行うのは面倒なので,操作 \(3\) を行う回数をできるだけ少なくして,文字列 \(S\) をレベル \(K\) の JOI 文字列に変換したい.
長さ \(N\) の文字列 \(S\) と \(1\) 以上の整数 \(K\) が与えられたとき,文字列 \(S\) をレベル \(K\) の JOI 文字列に変換するのに必要な操作 \(3\) の回数の最小値を出力するプログラムを作成せよ.ただし,どのように操作を行っても文字列 \(S\) をレベル \(K\) の JOI 文字列に変換できない場合は,代わりに \(−1\) を出力せよ.
Input
入力は以下の形式で標準入力から与えられる.\(N, K\) は整数である.\(S\) は文字列である.
\(N\) \(K\)
\(S\)
Output
文字列 \(S\) をレベル \(K\) の JOI 文字列に変換するのに必要な操作 \(3\) の回数の最小値を \(1\) 行で出力せよ.ただし,どのように操作を行っても文字列 \(S\) をレベル \(K\) の JOI 文字列に変換できない場合は,代わりに \(-1\) を出力せよ.
Constraints
- \(3 \leqq N \leqq 200\,000\).
- \(1 \leqq K \leqq \frac{N}{3}\).
- \(S\) は
J,O,Iの \(3\) 種類の文字からなる長さ \(N\) の文字列である.
Subtasks
- (\(1\) 点) \(N \leqq 21\).
- (\(12\) 点) \(N \leqq 3\,000\).
- (\(87\) 点) 追加の制約はない.
Examples
10 2 OJIJOIOIIJ
2
次のように操作を行うことで,文字列 \(S\) をレベル \(K\) のJOI文字列に変換できる.
- まず操作 \(1\) を行う.文字列 \(S\) は
JIJOIOIIJになる. - 次に操作 \(2\) を行う.文字列 \(S\) は
JIJOIOIIになる. - 次に操作 \(3\) を行い,先頭から \(2\) 文字目を消す.文字列 \(S\) は
JJOIOIIになる. - 最後に操作 \(3\) を行い,先頭から \(4\) 文字目を消す.文字列 \(S\) は
JJOOIIになる.
\(2\) 回未満の操作 \(3\) で変換することは不可能なので,\(2\) を出力する.
9 3 JJJOOOIII
0
操作を行わなくてもよい.
9 1 IIIOOOJJJ
-1
この入力例では,どのように操作を行っても文字列 \(S\) をレベル \(1\) の JOI 文字列に変換できない.
Notes
JOI 2020 · JCIOI · CC BY-SA 4.0
Tags
No tags yet