牛客-50963.Editor(栈)
地址:https://ac.nowcoder.com/acm/problem/50963思路:利用两个栈来分别存储下标前和下标后的元素,同时记录下标前的元素其前缀和以及答案即可。Code:#include<iostream>using namespace std;const int MAX_N=1e6+5;int Q,sl,sr;int dl[MAX_N],dr[MAX_N];int
·
地址:https://ac.nowcoder.com/acm/problem/50963
思路:利用两个栈来分别存储下标前和下标后的元素,同时记录下标前的元素其前缀和以及答案即可。
Code:
#include<iostream>
using namespace std;
const int MAX_N=1e6+5;
int Q,sl,sr;
int dl[MAX_N],dr[MAX_N];
int Sum[MAX_N],res[MAX_N];
int main()
{
ios::sync_with_stdio(false);
char ch;
int x;
res[0]=-1e9;
while(cin>>Q){
sl=sr=0;
while(Q--){
cin>>ch;
if(ch=='I'){
cin>>x;
dl[++sl]=x;
Sum[sl]=Sum[sl-1]+dl[sl];
res[sl]=max(res[sl-1],Sum[sl]);
}else if(ch=='D'){
if(sl) --sl;
}else if(ch=='L'){
if(sl) dr[++sr]=dl[sl--];
}else if(ch=='R'){
if(sr){
dl[++sl]=dr[sr--];
Sum[sl]=Sum[sl-1]+dl[sl];
res[sl]=max(res[sl-1],Sum[sl]);
}
}else{
cin>>x;
cout<<res[x]<<endl;
}
}
}
return 0;
}
更多推荐
已为社区贡献5条内容
所有评论(0)