トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2004da2.c

// 2004 国内予選 問題A
// 配列を1つ使う

#include <stdio.h>

#define N 51

// 2数を交換する関数
void swap(int *x, int *y)
{
	int tmp=*x;
	*x=*y;
	*y=tmp;
}

int main(void)
{
	int n, r, p, c, i, j, k;
	int card[N+1]; // cardはカードの山、添え字を1から始める
	
	while(1){
		scanf("%d %d", &n, &r);
		if(n==0 && r==0){
			break;
		}
		
		// カードを並べる
		for(i=1; i<=n; i++){
			card[i]=n-i+1;
		}
		
		for(i=0; i<r; i++){
			scanf("%d %d", &p, &c);
			
			for(j=p; j>=2; j--){ // p枚目とp-1枚目を交換するのを一番上までやる
				for(k=0; k<c; k++){ // それをc枚分繰り返す
					swap(&card[j+k], &card[j+k-1]);
				}
			}
		}
		printf("%d\n", card[1]);
	}
	
	return(0);
}