야찌는 원래 주사위를 가지고 하는 게임이지만, 이 문제에서는 카드 더미와 다섯 장의 종이를 이용한 게임이다. 이 문제에서 설명하는 규칙은 실제 야찌의 규칙과 다르다는 것을 유의하라.
카드 더미의 각 카드에는 부터 까지의 수 중 하나가 적혀 있고, 다섯 장의 종이는 번부터 번까지 번호가 붙어 있다.
이 게임의 목표는 다음 규칙을 따라서 야찌를 가장 많이 하는 것이다.
- 카드 더미의 카드를 위에서 개 뽑아서 카드에 적힌 수를 번부터 번까지 다섯 장의 종이에 순서대로 적는다.
- 다음 과정을 최대 한 번 수행할 수 있다. 이 과정의 이름은 다시 뽑기이다.
- 한 장 이상 다섯 장 이하의 종이를 선택한다. 선택하는 종이가 연속할 필요는 없으며, 종이를 번호 순서대로 선택하지 않아도 된다.
- 선택한 종이에 적혀있는 수를 지운다.
- 선택한 종이의 개수만큼 카드를 뽑는다.
- 카드에 적힌 수를 차례대로 선택한 종이에 적는다.
- 다시 뽑기 과정을 마치고, 다섯 장의 종이에 적힌 수가 모두 같으면 야찌 한 번이다.
- 다시 과정 1로 돌아가서 게임을 이어할지, 아니면 여기서 게임을 종료할지 결정한다. 과정 1 ~ 4를 차례로 한 번 거치면 이를 한 턴이라고 한다.
덱에는 카드가 개 있다. 그래서 다오는 카드를 최대 번 뽑을 수 있다. 다오는 몰래 카드 덱을 다 조사했기 때문에 카드 덱에 있는 개의 카드에 적힌 수를 순서대로 모두 알고 있다. 다오가 최대한 많은 야찌를 할 수 있는 방법을 구하는 프로그램을 작성하시오.
입력 형식
첫 줄에 덱의 카드 개수 이 주어진다. ()
두 번째 줄에 카드에 적힌 수들이, 위쪽 카드부터, 길이 인
문자열로 주어진다.
이 문자열은 1부터 6까지 여섯 가지의 수로만 이루어져 있다.
출력 형식
첫 줄에 최대한 많은 야찌를 했을 때 야찌 횟수를 출력한다.
두 번째 줄에 야찌 횟수를 최대화하기 위해 필요한 총 턴 수 를 출력한다. () 이때, 을 출력하면, 채점 방식에 따른 부분 점수를 얻을 수 있다.
이후의 줄들에 각 턴에서 어떻게 플레이해야 하는지 턴 차례대로 출력한다.
번째 턴에 대한 정보는 다음 양식으로 출력한다.
- 첫 줄에
Turn i를 출력한다. - 두 번째 줄에 번째 턴에 다시 뽑기를 한 횟수를 출력한다.
- 횟수가 인 경우 그 다음 줄에 다시 뽑기의 정보를 출력한다.
다시 뽑기의 정보는 다음 양식으로 한 줄에 출력한다:
- 선택한 종이 수와 선택한 종이의 번호를 선택한 순서대로 출력한다.
만약, 답이 여러 가지인 경우 그중 아무거나 하나 출력한다.
예제 1
입력
5 12346
출력
0 1 Turn 1 0
예제 2
입력
8 11123111
출력
1 1 Turn 1 1 2 4 5
예제 3
입력
10 1234566666
출력
1 2 Turn 1 0 Turn 2 0
예제 설명
예제 1에서, 턴 수 이므로, 적어도 한 턴은 플레이해야 함에 유의하라.
예제 2에서, 다음과 같은 방법으로 야찌를 번 할 수 있다.
- 유일한 턴에서 한 번의 다시 뽑기를 한다. 처음에 카드를 다섯 개 뽑으면, 번부터 번까지 각 종이에 차례대로 , , , , 이 적힌다.
- 다시 뽑기로 번과 번, 두 개의 종이를 선택한다. 카드를 두 개 뽑으면, 번부터 번까지 각 종이에 적힌 값은 차례대로 , , , , 이 된다.
- 모든 종이에 적힌 값이 이다. 야찌가 되었고, 턴을 종료한다.
채점 방식
각 데이터에 대해, 이고 최대 야찌 횟수가 올바르면 의 점수를 얻을 수 있다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 21점
종류 2: 43점
종류 3: 19점
모든 카드에 과 만 적혀 있다.
종류 4: 17점
추가적인 제한 조건이 없음.
해설
각 턴에서 할 수 있는 작업은 다음 둘 중 하나입니다.
- 야찌를 포기하고 개의 수 소모하기.
- 개의 수로 야찌를 성공하기.
(2)의 경우, 야찌를 만들 숫자 를 결정합니다. 마지막 re-roll의 모든 수는 라야 하므로, 개의 수로 야찌가 가능한지 여부를 쉽게 판정할 수 있습니다. 이제, 다음과 같은 DP를 통해 에 최대 점수와 실제 방법을 모두 알아낼 수 있습니다.