HDOJ4699(對頂棧)
阿新 • • 發佈:2018-04-30
namespace include Go hdoj name int HA names continue
#include<cstdio> #include<stack> #include<cstring> #include<algorithm> using namespace std; const int maxn=1000000; int Q1[maxn]; int Q2[maxn],r1,r2; int sum[maxn],dp[maxn]; int main(){ int n; while(scanf("%d",&n)!=EOF){ memset(Q1,0,sizeof(Q1)); memset(Q2,0,sizeof(Q2)); memset(sum,0,sizeof(sum)); memset(dp,0,sizeof(dp)); dp[0]=-(1<<29); r1=r2=0; char c; char p[10]; int num; while(n--){ scanf("%s",p); c=p[0]; if(c==‘I‘){ scanf("%d",&num); Q1[++r1]=num; sum[r1]=sum[r1-1]+num; dp[r1]=max(dp[r1-1],sum[r1]); } else if(c==‘D‘){ if(r1==0) continue; r1--; } else if(c==‘L‘){ if(r1==0) continue; Q2[++r2]=Q1[r1]; r1--; } else if(c==‘R‘){ if(r2==0) continue; num=Q2[r2--]; Q1[++r1]=num; sum[r1]=sum[r1-1]+num; dp[r1]=max(dp[r1-1],sum[r1]); } else{ scanf("%d",&num); printf("%d\n",dp[num]); } } } return 0; }
HDOJ4699(對頂棧)