1017-Riffle Shuffle

Riffle Shuffleの仕様を読み取り実装する問題。

英文が読みとれればそれを実装するだけ。
dequeを使うと実装が楽な気がする。
実装(C++)

#include <cstdio>
#include <deque>
using namespace std;
int R(int n,int c,int *D){
	deque<int> A,B;
	int count=0;
	for(int i=0;i<(n)/2;i++){
		B.push_back(D[i]);
	}
	for(int i=(n)/2;i<n;i++){
		A.push_back(D[i]);
	}
	while(!(A.empty()&&B.empty())){
		for(int i=0;i<c;i++){
			if(!A.empty()){
				D[count++]=A.front();A.pop_front();
			}
		}
		for(int i=0;i<c;i++){
			if(!B.empty()){
				D[count++]=B.front();B.pop_front();
			}
		}
	}
}
int main() {
	int n,r,c;
	for(;~scanf("%d%d",&n,&r);){
		int D[n];
		for(int i=0;i<n;i++)D[i]=i;
		for(;r--;)scanf("%d",&c),R(n,c,D);
		printf("%d\n",D[n-1]);
	}
	return 0;
}