トップ 一覧 Farm 検索 ヘルプ 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);
 }