두부 게임을 시뮬레이션한다. 외친 블록 번호마다 다음 기준이 정해지므로, 그 번호를 가진 사람을 출력하고 종료 값에서 멈춘다.
보통4시뮬레이션구현수학배열아직 제출이 없습니다시간 제한2초메모리 제한128 MB새내기 경환이는 선배들이 하는 두부 게임에 끼었다가 규칙을 놓쳐 제대로 당했다. 다음에는 당하지 않으려고 두부 게임의 진행을 대신 계산해 주는 프로그램을 만들기로 했다.
두부 게임은 N명이 원을 이루어 앉아서 한다. 자리마다 1번부터 N번까지 번호가 붙어 있고, 번호가 커지는 쪽이 원을 도는 방향이다. N번 자리 다음은 다시 1번 자리다. 한 판은 M모 게임으로 진행하며, M은 1보다 큰 홀수다.
라운드가 시작되면 기준이 되는 사람에게 (M/2+1)의 정수 부분, 곧 (M+1)/2모가 붙는다. 기준자 뒤에 앉은 사람은 순서대로 그다음 모 수부터 M모까지 받고, 기준자 앞에 앉은 사람은 순서대로 그 앞의 모 수부터 1모까지 받는다. 첫 라운드의 기준자는 주최자 A다.
예를 들어 5명이 둘러앉아 5모 게임을 하고 2번이 기준자라면 2번은 3모, 3번과 4번은 각각 4모와 5모, 1번과 5번은 각각 2모와 1모를 받는다.
기준자는 1 이상 M 이하의 모 수 X를 부른다. X를 받은 사람이 다음 라운드의 기준자가 되고, 모 수는 새 기준자를 중심으로 다시 붙는다. N이 M보다 작으면 한 사람이 여러 모 수를 받는데, 이때 X에 해당하는 사람은 위 규칙대로 기준자에서 세어 나간 자리에 앉은 사람이다.
기준자가 실수로 자기 모 수를 부르면 게임은 그 자리에서 끝난다. 자기 차례가 아닌데 구호를 외치는 경우는 없다고 하자.
첫 줄에 N, M, A가 공백 한 칸으로 구분되어 주어진다. N은 M/2<N<100000을 만족하는 정수, M은 1보다 크고 10000보다 작은 홀수, A는 1≤A≤N을 만족하는 정수다.
둘째 줄부터는 기준자가 부른 모 수가 한 줄에 하나씩 주어진다. 모 수는 1 이상 M 이하의 정수다. 입력의 끝에는 (M/2+1)의 정수 부분이 주어지며, 둘째 줄부터의 줄 수는 최대 10000이다.
첫 기준자부터 시작해서, 불린 모 수를 받은 사람의 번호를 입력 순서대로 한 줄에 하나씩 출력한다. 입력의 끝을 뜻하는 모 수가 나오면 0을 출력하고 멈춘다.