HDOJ -- 4699
2014-03-23 14:44
309 查看
Editor
Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1236 Accepted Submission(s): 391
[align=left]Problem Description[/align]
[align=left]Sample Input[/align]
8
I 2
I -1
I 1
Q 3
L
D
R
Q 2
[align=left]Sample Output[/align]
2
3
Hint
The following diagram shows the status of sequence after each instruction:
一直wa,谁能告诉我哪错了!
#include<stack> #include<cstdio> #include<cstring> #define MAX 1000005 using namespace std; stack<int>l, r; long long int dp[MAX], sum[MAX], n, temp; char str[5]; int main(){ freopen("in.c", "r", stdin); while(~scanf("%lld", &n)){ while(!l.empty()) l.pop(); while(!r.empty()) r.pop(); memset(sum, 0, sizeof(sum)); memset(dp, 0, sizeof(dp)); dp[0] = -100000000; for(int i = 0;i < n;i ++){ scanf("%s", str); if(str[0] == 'I'){ scanf("%lld", &temp); l.push(temp); sum[l.size()] = sum[l.size()-1] + temp; dp[l.size()] = max(sum[l.size()], dp[l.size()-1]); }else if(str[0] == 'L'){ if(!l.empty()){ int del = l.top(); l.pop(); r.push(del); } }else if(str[0] == 'Q'){ scanf("%lld", &temp); temp = min(temp, (long long int)l.size()); l.size() == 0 ? printf("0\n") : printf("%lld\n", dp[temp]); }else if(str[0] == 'D') l.pop(); else{ if(!r.empty()){ int del = r.top(); r.pop(); l.push(del); sum[l.size()] = sum[l.size()-1] + del; dp[l.size()] = max(sum[l.size()], dp[l.size()-1]); } } } } }