Sample Input
8
I 2
I -1
I 1
Q 3
L
D
R
Q 2
Sample Output
2
3
一个栈存光标前的,一个存光标后的
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+6;
stack<int>a,b;
char op;
int c,p,n;
int sum[N],f[N];
void update(int p,int c){
sum[p]=sum[p-1]+c,f[p]=max(f[p-1],sum[p]);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
while(cin>>n){
f[0]=-1e9,p=0;
while(!a.empty())a.pop();
while(!b.empty())b.pop();
while(n--){
cin>>op;
if(op=='I')cin>>c,a.push(c),update(++p,c);
if(op=='D')a.pop(),--p;
if(op=='L')if(!a.empty())b.push(a.top()),a.pop(),--p;
if(op=='R')if(!b.empty())a.push(c=b.top()),b.pop(),update(++p,c);
if(op=='Q')cin>>c,cout<<f[c]<<'\n';
}
}
return 0;
}