SGU 271 Book Pile 双端队列
------------
int n,m,k; deque<string>que; vector<string>ans; char cmd[22],c[4];; int bit; int main(){ scanf("%d%d%d",&n,&m,&k); que.clear(); ans.clear(); for (int i=0;i<n;i++){ scanf("%s",c); que.push_back(c); } while (sz(que)>k){ ans.push_back(que.back()); que.pop_back(); } bit=1; for (int i=0;i<m;i++){ scanf("%s",cmd); if (cmd[0]=='R'){ bit^=1; } if (cmd[0]=='A'){ memset(c,0,sizeof(c)); strncpy(c,cmd+4,strlen(cmd)-5); if (bit){ que.push_front(c); if (sz(que)>k){ ans.push_back(que.back()); que.pop_back(); } } else{ que.push_back(c); if (sz(que)>k){ ans.push_back(que.front()); que.pop_front(); } } } } while (!que.empty()){ if (bit){ ans.push_back(que.back()); que.pop_back(); } else{ ans.push_back(que.front()); que.pop_front(); } } for (int i=sz(ans)-1;i>=0;i--){ printf("%s\n",ans[i].c_str()); } return 0; }
------------