#include<bits/stdc++.h>
using namespace std;
#define endl '\n' //用endl替换\n
int main(){
ios::sync_with_stdio(false);//
cin.tie(nullptr);//
cout.tie(nullptr);//
return 0;
}
关于sync_with_stdio和cin.tie和cout.tiehttps://blog.csdn.net/qq_45475271/article/details/107675845
问题 B: Deque
时间限制: 1.000 Sec 内存限制: 128 MB
提交 状态题目描述
For a dynamic array A={a0,a1,...}of integers, perform a sequence of the following operations:
push(d, x): Add element x at the begining of A, if d=0. Add element x at the end of A, if d=1.
randomAccess(p): Print element ap.
pop(d): Delete the first element of A, if d=0. Delete the last element of A, if d=1.
A is a 0-origin array and it is empty in the initial state.输入
The input is given in the following format.
q
query1
query2
:
queryq
Each query queryi is given by
0 d x
or
1 p
or
2 d
where the first digits 0, 1 and 2 represent push, randomAccess and pop operations respectively.
randomAccess and pop operations will not be given for an empty array.输出
For each randomAccess, print ap in a line.
样例输入 Copy
11 0 0 1 0 0 2 0 1 3 1 0 1 1 1 2 2 0 2 1 0 0 4 1 0 1 1样例输出 Copy
2 1 3 4 1提示
1≤q≤400,000
0≤p<0≤p< the size of A
−1,000,000,000≤x≤1,000,000,000
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'//
int n;
deque<int >num;
int main(){
ios::sync_with_stdio(false);//
cin.tie(nullptr);//
cout.tie(nullptr);//
cin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
if(x==0){
int a,b;
cin>>a>>b;
if(a==0) num.push_front(b);
else num.push_back(b);
}
else if(x==1){
int a;
cin>>a;
if(num.empty()) continue;///
cout<<num[a]<<endl;//
}
else if(x==2){
int a;
cin>>a;
if(num.empty()) continue;
if(a==0) num.pop_front();
else num.pop_back();
}
}
return 0;
}