hdu 4699 Editor 模拟栈

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

代码如下:

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #define M 1000001
 5 using namespace std;
 6 int A[M],B[M],a[M],s[M],cur,x,q,l,r;
 7 char c;
 8 int main()
 9 {
10     while(scanf("%d",&q)!=EOF){
11         l=r=1;
12         while(q--){
13             scanf("%s",&c);
14             switch(c)
15             {
16                 case 'D':
17                     if(l>1) l--;
18                     break;
19                 case 'I':
20                     scanf("%d",&x);
21                     A[l++]=x;
22                     if(l==2) s[1]=a[1]=x;
23                     else{
24                         a[l-1]=a[l-2]+x;
25                         s[l-1]=max(s[l-2],a[l-1]);
26                     }
27                     break;
28                 case 'L':
29                     if(l>1) B[r++]=A[--l];
30                     break;
31                 case 'Q':
32                     scanf("%d",&x);
33                     printf("%d\n",s[x]);
34                     break;
35                 case 'R':
36                     if(r>1){
37                         x=B[--r];
38                         A[l++]=x;
39                         if(l==2) a[1]=s[1]=x;
40                         else{
41                             a[l-1]=a[l-2]+x;
42                             s[l-1]=max(s[l-2],a[l-1]);
43                         }
44                     }
45                     break;
46             }
47         }
48     }
49     return 0;
50 }
View Code

 

 

 

posted @ 2013-08-23 19:11  _随心所欲_  阅读(321)  评论(0编辑  收藏  举报