問題文通りにそのまま書いてみた。
/********************************
* 2012/0623 *
* AOJ VOlume11 1129 *
* POJ1978 *
* 花札シャッフル *
* crane *
********************************/
#include<iostream>
#define MAX_N 50
int card[MAX_N]; //カード内容
int t_card[MAX_N]; //シャッフル用カードtmp
int main(){
int n = 0; //札の枚数
int r = 0; //カット回数
int p = 0; //p枚目から
int c = 0; //c枚取り出す
while(std::cin >> n >> r, n, r){
//配列の初期化
for(int i=0; i<n; i++) card[i] = i + 1;
//shuffle
for(int i=0; i<r; i++){ //カット回数r分
std::cin >> p >> c;
for(int j=0; j<c; j++)
t_card[c-1-j] = card[n-p-j];
for(int j=n-p+1; j<n; j++)
card[j-c] = card[j];
for(int j=0; j<c; j++)
card[n-c+j] = t_card[j];
}
std::cout << card[n-1] << std::endl;
}
return 0;
}
0 件のコメント:
コメントを投稿