128. 编辑器
128. 编辑器
做法:对顶栈,其中中间的值为光标的位置。
详细思路
#include
using namespace std;
const int N = 1000010;
int skl[N],skr[N],l,r;
int f[N],sum[N];void add(int x){skl[++l] = x;sum[l] = sum[l-1] + x;f[l] = max(f[l-1],sum[l]); //维护前缀和最大值
}int main(){cin.tie(0)->sync_with_stdio(false);int Q; cin>>Q;f[0] = -1e9;while(Q--){char c; cin>>c;if(c == 'I'){int x; cin>>x;add(x);} else if(c == 'D'){if(l > 0) l--;} else if(c == 'L') {if(l > 0) skr[++r] = skl[l--];} else if(c == 'R') {if(r > 0) add(skr[r--]);} else {int k; cin>>k;cout<<f[k]<<'\n';}}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
