AcWing 128. 编辑器
原题链接
简单
作者:
Value
,
2020-09-02 09:33:36
,
所有人可见
,
阅读 440
#include <iostream>
#include <algorithm>
#include <limits.h>
using namespace std;
const int N = 1E6 + 10;
int stkl[N], stkr[N], tl, tr;
int s[N], f[N];
void push_left(int x){
stkl[ ++ tl] = x;
s[tl] = s[tl - 1] + x;
f[tl] = max(f[tl - 1], s[tl]);
}
int main(){
int n; cin >> n;
f[0] = INT_MIN;
while(n -- ){
char op[5];
cin >> op;
int x;
if(op[0] == 'I'){
cin >> x;
push_left(x);
}else if(op[0] == 'D'){
if(tl > 0) tl -- ;
}else if(op[0] == 'L'){
if(tl > 0){
x = stkl[tl -- ];
stkr[ ++ tr] = x;
}
}else if(op[0] == 'R'){
if(tr > 0){
x = stkr[tr -- ];
push_left(x);
}
}else{
cin >> x;
cout << f[x] << endl;
}
}
return 0;
}