Problemas
베시는 양의 정수 N과 길이가 3N인 문자열 "COW", "OWC", "WCO" 중 하나이다.
문자열 +는 문자열 이어 붙이기(concatenation)를 의미한다. 예를 들어 "COWCOW"와 "CC"는 제곱 문자열이지만, "COWO"와 "OC"는 제곱 문자열이 아니다.
한 번의 연산에서, 베시는
당신의 임무는 베시가
베시는 또한 매개변수
k = 0 이면,M 은 가능한 연산 횟수의 최솟값과 정확히 같아야 한다.k = 1 이면,M 은 가능한 최솟값보다 최대1 만큼 더 커도 된다.
Entrada
첫 줄에 독립적인 테스트 케이스 수
각 테스트 케이스는 다음과 같다:
첫 줄에
N(1 ≤ N ≤ 10^5) 둘째 줄에 문자열
S
모든 테스트 케이스에 대한
Salida
각 테스트 케이스마다 다음 절차에 따라 한 줄 또는 두 줄을 출력한다.
만약
S 를 빈 문자열로 만드는 것이 불가능하면, 한 줄에-1 을 출력한다.가능하다면,
첫 줄에 연산 횟수
M 을 출력한다.둘째 줄에
3N 개의 정수를 공백으로 구분해 출력한다.i 번째 정수x 는S 의i 번째 글자가x 번째 부분수열을 제거하는 과정에서 삭제되었음을 의미한다(1 ≤ x ≤ M ).
Subtarea
| # | Puntaje | Condición |
|---|---|---|
| #1 | 20 | |
| #2 | 30 | |
| #3 | 50 | |
Ejemplo #1
3 1
3
COWOWCWCO
4
WCOCOWWCOCOW
6
COWCOWOWCOWCOWCOWC
-1
1
1 1 1 1 1 1 1 1 1 1 1 1
3
3 3 2 3 3 2 1 1 1 1 1 1 1 1 1 1 1 1
마지막 테스트의 경우, 최적(최소) 연산 횟수는 2이므로, M = 2 또는 M = 3인 어떤 유효한 구성도 정답으로 인정된다.
M = 3인 한 가지 가능한 구성은 다음과 같다:
첫 번째 연산에서 마지막 12개의 문자를 제거한다. 그러면 남는 것은 "COWCOW"이다.
두 번째 연산에서 부분수열 "WW"를 제거한다. 그러면 남는 것은 "COCO"이다.
마지막 연산에서 남아 있는 모든 문자를 제거한다.
Ejemplo #2
3 0
3
COWOWCWCO
4
WCOCOWWCOCOW
6
COWCOWOWCOWCOWCOWC
-1
1
1 1 1 1 1 1 1 1 1 1 1 1
2
1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2