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; }