라운드 기록 복원하기

NYPC 2024 · 본선

크리스와 티이라는 친구들과 함께 카트라이더 친선전을 개최했다. 크리스의 팀을 '레드팀', 티이라의 팀을 '블루팀'이라고 하자.

이 친선전은 여러 라운드로 구성된다. 라운드마다 레드팀과 블루팀 중 한 팀이 승리를 거두며, 승리한 팀은 11점을 획득한다. 두 팀의 점수 차이가 KK점 이상 벌어지면 그 순간 친선전이 종료된다.

친선전이 끝났을 때, 총 NN 번의 라운드가 진행되었고, 크리스와 티이라는 각 라운드의 승자를 기록해 두었다.

그러나 아쉽게도 이 기록 중 일부가 유실되고 말았다. 유실된 기록 중 복구 가능한 것들을 최대한 되살리는 프로그램을 작성하라.

입력 형식

첫 줄에 친선전에서 진행된 라운드의 수를 정수 NN과 친선전이 종료되는 조건을 나타내는 정수 KK가 공백으로 구분되어 주어진다. (KN250000;K \le N \le 250\,000; 2K52 \le K \le 5)

그다음 줄에 각 라운드의 승자를 나타내는 길이 NN인 문자열이 주어진다. 문자열의 ii 번째 문자는 R, B, ? 중 하나이며, Rii 번째 라운드에서 레드팀이 승리하였음을, B는 블루팀이 승리하였음을, ?는 기록이 유실되어 승자를 알 수 없음을 의미한다.

주어진 조건을 만족하면서, 정확히 NN 번째 라운드에 종료된 친선전의 기록만 주어진다.

출력 형식

첫 줄에 유실된 기록 중 복구 가능한 것들을 최대한 살린 결과를 나타내는 길이 NN인 문자열을 출력한다. ii 번째 문자가 R이라면 ii 번째 라운드에서 레드팀이 승리하였음을, B이라면 블루팀이 승리하였음을, ?이라면 유실된 기록을 복구할 수 없음을 의미한다.

예제 1

입력

4 2 ?B?R

출력

RBRR

예제 2

입력

2 2 ??

출력

??

예제 3

입력

6 2 R???B?

출력

RB??BB

예제 4

입력

8 2 ?RR??R?B

출력

BRRBBRBB

예제 5

입력

5 3 R?R??

출력

RBRRR

예제 설명

입력 예제 1에서, 모든 유실된 기록을 복원할 수 있다.

입력 예제 2에서, RR, BB 두 가지 경우가 가능하므로, 유실된 기록을 복원할 수 없다.

입력 예제 3에서, RBRBBB, RBBRBB 두 가지 경우가 가능하므로, 세 번째 라운드와 네 번째 라운드의 유실된 기록은 복원할 수 없지만, 두 번째와 여섯 번째 라운드의 유실된 기록은 복원할 수 있다.

입력 예제 4와 5에서, 모든 유실된 기록을 복원할 수 있다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 12

마지막 라운드의 기록만 유일하게 유실됨.

종류 2: 10

기록이 유실된 라운드가 정확하게 두 개.

종류 3: 19

기록이 유실된 라운드가 2020개 이하.

종류 4: 26

K=2K = 2

종류 5: 33

추가적인 제한 조건이 없음.

해설