문제
지안이는 양의 정수 과 길이가 인 문자열 를 가지고 있다. 는 COW, OWC, WCO 중 하나인 길이 의 문자열 개를 이어 붙여 만든 것이다. 즉, 를 구성하는 각 단위는 COW를 순환 이동(cyclic shift)하여 만들 수 있는 문자열이다.
문자열 가 제곱 문자열인 것은 를 만족하는 문자열 가 존재한다는 것과 같다. 여기서 는 문자열 이어 붙이기를 의미한다. 예를 들어, COWCOW와 CC는 제곱 문자열이지만, COWO와 OC는 아니다.
지안이는 한 번의 연산으로 에서 제곱 문자열인 부분 수열 를 하나 골라 제거할 수 있다. 문자열의 부분 수열이란, 기존 문자열에서 개 이상의 문자를 제거하여 얻을 수 있는 문자열을 말한다.
지안이를 도와 를 빈 문자열로 만드는 것이 가능한지 판단하고, 가능하다면 그 방법을 구하시오.
또한, 또는 의 값을 갖는 매개변수 가 주어진다. 사용한 연산 횟수를 이라고 하자.
- 이라면, 은 가능한 최소 연산 횟수와 같아야 한다.
- 이라면, 은 가능한 최소 연산 횟수보다 최대 만큼 더 클 수 있다. ( 최소 연산 횟수 )
입력
첫째 줄에 테스트 케이스의 개수 와 매개변수 가 공백으로 구분되어 주어진다. (; )
각 테스트 케이스는 다음과 같이 두 줄로 구성된다.
- 첫째 줄에 이 주어진다. ()
- 둘째 줄에 문자열 가 주어진다.
모든 테스트 케이스에 대한 의 합은 를 넘지 않는다.
출력
각 테스트 케이스에 대해, 다음과 같이 한 줄 또는 두 줄을 출력한다.
를 빈 문자열로 만드는 것이 불가능하다면, -1을 출력한다.
가능하다면, 첫째 줄에 사용한 연산 횟수 을 출력한다. 둘째 줄에 개의 정수를 공백으로 구분하여 출력한다. 번째 정수 는 의 번째 문자가 번째 연산에서 제거되었음을 의미한다. ()
예제 입력 1
3 1
3
COWOWCWCO
4
WCOCOWWCOCOW
6
COWCOWOWCOWCOWCOWC
예제 출력 1
-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
3 0
3
COWOWCWCO
4
WCOCOWWCOCOW
6
COWCOWOWCOWCOWCOWC
예제 출력 2
-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
점수
- 입력 3-4: , ,
- 입력 5-6:
- 입력 7-14:
코드를 제출하려면 로그인이 필요합니다.
로그인