Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Deque"
https://onlinejudge.u-aizu.ac.jp/problems/ITP2_1_B
整数を保持する可変長配列A={a0,a1,...}に対して、以下の操作を行ってください。
push(d, x): dが0の場合、Aの先頭に整数xを挿入する。dが1の場合、末尾にxを挿入する。
randomAccess(p): Aの要素apの値を出力する。
pop(d): dが0の場合、Aの先頭の要素を削除する。dが1の場合、末尾の要素を削除する。
Aは0-オリジンでインデックスが付けられ、初期状態では空とします。
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #ITP2_1_B : Deque
/* Aizu Online Judge in C++ #ITP2_1_B : Deque https://onlinejudge.u-aizu.ac.jp/problems/ITP2_1_B 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ deque<int> a; int q; cin>>q; for(int i=0;i<q;i++){ int n,d,x; cin>>n>>d; if(n==0){ cin>>x; if(d==0){ a.push_front(x); }else{ a.push_back(x); } }else if(n==1){ cout<<a[d]<<endl; }else{ if(d==0){ a.pop_front(); }else{ a.pop_back(); } } } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/