第6回日本情報オリンピック 予選(過去問)から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
「競技プログラミング」を略して、「競プロ」などと呼ばれています。
#D - カードの並び替え
僕が作成、提出したコードは、以下のとおりです。
/* AtCoder Problems in C++ #D - カードの並び替え https://atcoder.jp/contests/joi2007yo/tasks/joi2007yo_d 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<int> c(n*2),c2(n*2); for(int i=0;i<n*2;i++){ c[i]=i+1; } for(int i=0;i<m;i++){ int k; cin>>k; if(k==0){ for(int j=0;j<n;j++){ c2[j*2]=c[j]; c2[j*2+1]=c[j+n]; } for(int j=0;j<n*2;j++){ c[j]=c2[j]; } }else{ for(int j=0;j<k;j++){ c2[2*n-k+j]=c[j]; } for(int j=k;j<n*2;j++){ c2[j-k]=c[j]; } for(int j=0;j<n*2;j++){ c[j]=c2[j]; } } } for(int i=0;i<n*2;i++){ cout<<c[i]<<endl; } return 0; }