トップ 一覧 Farm 検索 ヘルプ RSS ログイン

2004da1.cの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 // 2004 国内予選 問題A
 // 配列を2つ使う
 
 #include <stdio.h>
 
 #define N 51
 
 int main(void)
 {
 	int n, r, p, c, i, j;
 	int card[N+1], tmp[N+1]; // cardはカードの山、tmpはコピー用
 							 // 添え字を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);
 			
 			//1枚目からp-1枚目をtmpにコピーしておく
 			for(j=1; j<=p-1; j++){
 				tmp[j]=card[j];
 			}
 			
 			// p枚目からp+c-1枚目を1枚目にコピーする
 			for(j=1; j<=c; j++){
 				card[j]=card[(p-1)+j];
 			}
 			
 			// tmpに保存してあったのを、c+1枚目にコピーする
 			for(j=1; j<=p-1; j++){
 				card[c+j]=tmp[j];
 			}
 		}
 		printf("%d\n", card[1]);
 	}
 	
 	return(0);
 }