rt
#include <bits/stdc++.h>
using namespace std;
#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>s1,s2,ns,_ns;
int l1=-1,l2=-1;
void spilt(int op){
if (op) swap(s1,s2);
l1=-1,l2=-1;
ns.clear(),_ns.clear();
int lengths=s1.size();
for (int i=1;i<=lengths/2;i++){
s2.push_back(s1.back());
s1.pop_back();
}
while (s2.size()){
if (l1!=-1) l1=s2.back();
ns.push_back(s2.back()),s2.pop_back();
}
while (s1.size()){
_ns.push_back(s1.back());
s1.pop_back();
}
while (_ns.size()){
if (l2!=-1) l2=s2.back();
s2.push_back(_ns.back()),_ns.pop_back();
}
s1=ns;
}
void push_back(int x){
if (l2==-1) l2=x;
s2.push_back(x);
}
void push_front(int x){
if (l1==-1) l1=x;
s1.push_back(x);
}
void pop_back(){
s2.pop_back();
if (!s2.size()&&s1.size()>=2) spilt(0);
}
void pop_front(){
s1.pop_back();
if (!s1.size()&&s2.size()>=2) spilt(1);
}
int size(){
return s1.size()+s2.size();
}
int front(){
if (s1.empty()) return l2;
return s1.back();
}
int back(){
if (s2.empty()) return l1;
return s2.back();
}
}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].front()<<'\n';
}
if (s=="back"){
int a=read();
if (q[a].size()==0) continue;
cout<<q[a].back()<<'\n';
}
}
return 0;
}
编译信息
编译失败
Nothing is compiled: OUTPUT exceeds.