되는대로 살자

[C언어 기출문제&풀이]Shuffle 본문

2009~2014/C/C++

[C언어 기출문제&풀이]Shuffle

malu 2011. 8. 14. 21:50
프로그램 명: shuffle
제한시간: 1 초

카드를 섞는 방법은 여러가지가 있다. 일본 카드 게임 hahafuda 를 섞는 방법은 이 중 한가지 이다. 이 카드를 섞는 방법은 다음과 같다.

n 장의 카드가 쌓여져 있다. 제일 위에서 p 번째 카드부터 c 장의 카드를 빼서 이를 제일 위로 올리면서 카드를 섞는 작업을 계속한다.

이 방법으로 카드를 섞는 작업을 시뮬레이션 했을 때 제일 위 카드는 어떤 카드가 되는 지를 알고자 한다.

입력

입력은 여러개의 테스트 데이터가 주어진다.

각 테스트 데이터 별 첫 줄에는 n,r 이 주어진다. n 은 카드 수 이고 , r 은 섞는 동작 수이다. 1 <= n,r <= 50

다음 r 줄에는 어떤 카드를 빼서 위로 올리는지의 정보로 두 개의 양의 정수 p 와 c 가 주어진다. (p + c ≤ n + 1) 카드의 꼭대기 부터 p 번째 카드에서 시작에서 c 장의 카드를 빼서 꼭대기로 올린다.

입력의 끝은 0 0 이다.

출력

각 테스트별 제일 위에 있는 카드 번호를 출력한다.

아래부터 위로 카드번호가 1 , 2 , ... , n 으로 주어지는 것으로 간주한다.

입출력 예

입력

5 2
3 1
3 1
10 3
1 10
10 1
8 3
0 0

출력

4
4
출처: Asia - Ehime (Japan) 2004 Preliminary

풀이 : ... 음 뭐라해야하지 알고리즘은 문제 방식대로 하면 된다.
값을 바꾸는 것처럼
1.p-1 덱을 저장
2.c덱을 1~c에 복사
3.p-1덱을 c덱 뒤에 복사
뭐 이렇게 하면 된다.