hdu 4699 Editor 模拟栈

时间:2022-04-01 08:13:59

思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!!

代码如下:

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define M 1000001
using namespace std;
int A[M],B[M],a[M],s[M],cur,x,q,l,r;
char c;
int main()
{
while(scanf("%d",&q)!=EOF){
l=r=;
while(q--){
scanf("%s",&c);
switch(c)
{
case 'D':
if(l>) l--;
break;
case 'I':
scanf("%d",&x);
A[l++]=x;
if(l==) s[]=a[]=x;
else{
a[l-]=a[l-]+x;
s[l-]=max(s[l-],a[l-]);
}
break;
case 'L':
if(l>) B[r++]=A[--l];
break;
case 'Q':
scanf("%d",&x);
printf("%d\n",s[x]);
break;
case 'R':
if(r>){
x=B[--r];
A[l++]=x;
if(l==) a[]=s[]=x;
else{
a[l-]=a[l-]+x;
s[l-]=max(s[l-],a[l-]);
}
}
break;
}
}
}
return ;
}