시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB5927417.391%

문제

세비 게임은 여섯 면의 주사위 다섯 개를 이용해서 하는 게임이다. 세비 게임은 둘이서 한다.

일단 플레이어 1이 주사위 다섯 개를 모두 던진다. 그 다음에 플레이어 2가 플레이어 1이 던진 주사위 다섯 개 중 적어도 두 개를 골라서 플레이어 1이 다시 던지게 한다. 그러고 나면 플레이어 1은 플레이어 2가 골라준 주사위를 다시 던지게 된다.

점수를 매기는 방법은 다음과 같다.

  1. 세비 : 5개의 주사위가 모두 같은 숫자를 보여줄 때
  2. 세비스트레이트 : 5개의 주사위의 숫자가 연속될 때 (예, 1 2 3 4 5 or 2 3 4 5 6)
  3. 스트레이트 : 5개의 주사위 중에 4개의 주사위가 연속될 때
  4. 풀 하우스 : 5개의 주사위 중 3개의 주사위가 같은 숫자를 나타내고, 또 다른 2개의 주사위가 같은 숫자를 나타낼 때 예) (1 3 1 1 3), (2 2 2 2 2)

입력으로 위의 점수가 주어지고, 플레이어 1이 던진 주사위가 주어지면, 플레이어 2가 적어도 두 개 이상의 주사위를 선택했을 때, 플레이어 1이 다시 주사위를 던져서 얻을 수 있는 점수의 기댓값을 가장 낮게 만드는 프로그램을 작성하시오.

입력

첫째 줄에 세비, 세비스트레이트, 스트레이트, 풀하우스의 점수가 주어진다. 둘째 줄에 플레이어 1이 던져서 나온 주사위의 눈이 주어진다. 점수는 10000보다 작은 음이 아닌 정수이고, 주사위의 눈은 1부터 6사이의 수이다.

출력

첫째 줄에 다시 던져야하는 주사위의 개수를 출력한 후에 둘째 줄에는 플레이어 2가 선택한 주사위의 번호를 오름차순으로 출력한다. 주사위의 번호는 입력으로 주어진 순서대로 1부터 5이다. 만약 기댓값이 같다면 사전순으로 앞서는 것을 출력한다.

예제 입력 1

50 40 30 25
1 1 1 1 1

예제 출력 1

3
1 2 3

예제 입력 2

50 40 30 25
1 2 3 4 5

예제 출력 2

2
3 4

예제 입력 3

50 40 30 25
5 4 3 2 1

예제 출력 3

2
2 3

예제 입력 4

10000 0 0 0
1 1 1 1 1

예제 출력 4

4
1 2 3 4

예제 입력 5

0 0 10000 0
4 2 3 4 4

예제 출력 5

2
2 3

예제 입력 6

0 0 0 1
3 3 3 3 3

예제 출력 6

4
1 2 3 4

힌트

예제 1의 경우 4개의 주사위를 다시 던지는 것은 스트레이트나 풀 하우스의 확률을 증가시켜준다. 따라서 3개의 주사위를 다시 던지는 것이 최적이다. 5개의 주사위중 어느 3개를 골라도 확률이 같으므로 사전순으로 가장 앞서는 1 2 3을 출력한다.

출처