JOI エリミネーター (JOI Eliminator)
Unrated
日本語
Language
Contribute a translation- Time limit
- 2000 ms
- Memory limit
- 1024 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
J, O, I からなる長さ \(N\) の文字列 \(S\) がある.
JOI 君は文字列 \(S\) に対して,以下の操作をそれ以上操作が行えなくなるまで繰り返す.
- \(S\) の中で
J,O,Iがこの順で連続して並んでいる箇所を \(1\) つ選び,その部分をO,I,Jの並びに置き換える.
操作の繰り返しは必ず終了し,また操作の方法によらず最終的な文字列の状態が一意に定まることが証明できる.
はじめの文字列 \(S\) の情報が与えられたとき,最終的な文字列 \(S\) を求めるプログラムを作成せよ.
Constraints
- \(3 \leqq N \leqq 500\,000\).
- \(S\) は
J,O,Iからなる長さ \(N\) の文字列である. - \(N\) は整数である.
Subtasks
- (\(14\) 点) \(N \leqq 100\).
- (\(27\) 点) \(N\) は \(3\) の倍数で, \(S\) は
JOIを \(N / 3\) 回繰り返したものである. - (\(29\) 点) ある整数 \(k\) \((2 \leqq k \leqq N\)) が存在して, \(S\) の \(1\) 文字目から \(k\) 文字目まではすべて
Jであり,一方 \(k + 1\) 文字目以降はJでない. - (\(30\) 点) 追加の制約はない.
Input
入力は以下の形式で与えられる.
\(N\)
\(S\)
Output
最終的な文字列 \(S\) を \(1\) 行で出力せよ.
Examples
Sample input 1
6 JOIJOI
Sample output 1
OIOIJJ
例えば,以下のように JOI 君が操作を行うことが考えられる.
最初,\(S = \) JOIJOI である.
- \(1\) 文字目から \(3\) 文字目に対して操作を行う. \(S = \)
OIJJOIとなる. - \(4\) 文字目から \(6\) 文字目に対して操作を行う. \(S = \)
OIJOIJとなる. - \(3\) 文字目から \(5\) 文字目に対して操作を行う. \(S = \)
OIOIJJとなる.
これ以上操作を行うことはできないため,OIOIJJ を出力する.
この入力例は小課題 \(1,2,4\) の制約を満たす.
Sample input 2
8 JJJOIOIO
Sample output 2
OIOIJJJO
この入力例は小課題 \(1,3,4\) の制約を満たす.
Sample input 3
20 JJOIJOIJOOIJOIIJJOIO
Sample output 3
OIOIJJJJOOIOIJIOIJJO
この入力例は小課題 \(1,4\) の制約を満たす.
Notes
JOI 2026 · JCIOI · CC BY-SA 4.0
Tags
No tags yet