주사위

면접 대비

시간 제한1초메모리 제한128 MB

요약
주사위 합만큼 말을 전진시키고, 함정 칸에 정확히 멈추면 다음 차례를 쉬며, 마지막 칸을 지나치는 사람이 이기는 보드 게임을 시뮬레이션한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 구현, 배열
정답자
아직 제출이 없습니다

문제

여러 세대의 아이들이 즐겨 온 간단한 보드게임이 있습니다. 보드에는 칸이 한 줄로 이어진 길이 있고, 색이 서로 다른 말들이 주어집니다. 각 참가자는 말 하나를 받으며, 모든 말은 처음에 길의 첫 번째 칸 바로 앞에 놓입니다.

게임은 라운드 단위로 진행됩니다. 각 라운드에서 참가자들은 정해진 순서(1번, 다음 2번, …)대로 주사위 두 개를 굴리고, 나온 두 눈의 합만큼 자신의 말을 앞으로 옮깁니다.

대부분의 칸은 평범하지만 일부는 함정입니다. 말이 이동을 마친 칸이 함정이면 그 참가자는 다음 라운드를 건너뛰어야 합니다. 즉 주사위를 굴리지 않고, 말도 한 라운드 동안 그대로 멈춰 있습니다.

길에는 함정이 정확히 세 개 있습니다.

자신의 말을 가장 먼저 길 끝 너머로 보낸 참가자가 승리합니다. 길의 끝은 마지막 칸 바로 뒤에 있습니다. 예를 들어 칸이 1번부터 48번까지 있는 보드에서, 41번 칸에 있는 말이 승리하려면 주사위 두 눈의 합이 8 이상이어야 48번 칸을 지나 끝에 도달합니다. 무승부는 절대 발생하지 않습니다.

참가자 수, 길의 칸 수, 세 함정의 위치, 그리고 주사위를 굴린 결과의 목록이 주어집니다. 어느 참가자가 이기는지 구하는 프로그램을 작성하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 정수 두 개 PP와 SS가 주어지며, 각각 참가자 수와 길의 칸 수를 의미합니다 (1≤P≤101 \le P \le 10, 3≤S≤100003 \le S \le 10000). 둘째 줄에는 서로 다른 정수 세 개 T1T_1, T2T_2, T3T_3이 주어지며, 함정의 위치를 나타냅니다 (1≤T1,T2,T3≤S1 \le T_1, T_2, T_3 \le S). 셋째 줄에는 정수 하나 NN이 주어지며, 이 테스트에서 주사위를 굴린 횟수입니다. 이어지는 NN개의 줄에는 각각 두 정수 D1D_1과 D2D_2 (1≤D1,D2≤61 \le D_1, D_2 \le 6)가 주어지며, 주사위 두 개를 굴린 결과입니다. 입력의 끝은 P=S=0P = S = 0인 줄(즉 0 0)로 표시되며, 이 줄은 처리하지 않습니다.

참가자는 11번부터 PP번까지 번호가 매겨지고, 매 라운드마다 1,2,…,P1, 2, \dots, P 순서로 차례를 진행합니다. 주사위 결과는 실제로 사용되는 순서 그대로 나열되어 있으며, 한 테스트에는 어떤 참가자가 이기기까지 필요한 만큼의 결과가 정확히 주어집니다.

출력

각 테스트 케이스마다 이긴 참가자의 번호를 한 줄에 출력하세요.

예제2

  1. 예제 1

    입력
    2 10
    2 4 8
    4
    1 1
    3 4
    1 2
    6 5
    3 7
    4 5 7
    7
    1 2
    2 2
    2 1
    1 1
    1 2
    1 1
    1 1
    0 0
    
    예상 출력
    1
    3
    
  2. 예제 2

    입력
    1 8
    1 2 3
    2
    5 2
    4 5
    0 0
    
    예상 출력
    1