萌新真的不知道为什么 RE 这么多点。。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fr first
#define sc second
inline int read(){
int res=0,f=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
return res*f;
}
const int N=1e6+5;
struct Deque{
vector<int>model,moder;
void push_back(int x) {moder.push_back(x);}
void push_front(int x) {model.push_back(x);}
void pop_back() {moder.pop_back();}
void pop_front() {model.pop_back();}
int size() {return moder.size()+model.size();}
int gets(int x){
if (model.size()>=x) return model[model.size()-x];
if (moder.size()+model.size()>=x) return moder[x-model.size()-1];
return -1;
}
}q[N];
signed main(){
int T=read();
while (T--){
string s;
cin>>s;
if (s=="push_back"){
int a=read(),x=read();
q[a].push_back(x);
}
if (s=="push_front"){
int a=read(),x=read();
q[a].push_front(x);
}
if (s=="pop_back"){
int a=read();
if (q[a].size()==0) continue;
q[a].pop_back();
}
if (s=="pop_front"){
int a=read();
if (q[a].size()==0) continue;
q[a].pop_front();
}
if (s=="size"){
int a=read();
cout<<q[a].size()<<'\n';
}
if (s=="front"){
int a=read();
if (q[a].size()==0) continue;
cout<<q[a].gets(1)<<'\n';
}
if (s=="back"){
int a=read();
if (q[a].size()==0) continue;
cout<<q[a].gets(q[a].size())<<'\n';
}
}
return 0;
}