您的位置:首页 > 其它

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]);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: