2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N=1e6+5; int a[N], b[N], top, blen, alen, f[N], sum[N]; int main() { int T;scanf("%d", &T); memset(f, -0x3f3f3f3f, sizeof f); sum[0]=0; while(T--) { char s[5];int x; scanf("%s", s); if(s[0]=='I') { scanf("%d", &x); a[++alen]=x; sum[alen]=sum[alen-1]+x; f[alen]=max(f[alen-1], sum[alen]); } else if(s[0]=='D') { if(alen) { a[alen]=0; f[alen]=0; sum[alen--]=-0x3f3f3f3f; } } else if(s[0]=='L') { if(alen) { b[++blen]=a[alen]; a[alen--]=0; } } else if(s[0]=='R') { if(blen) { a[++alen]=b[blen], b[blen--]=0; sum[alen]=sum[alen-1]+a[alen]; f[alen]=max(f[alen-1], sum[alen]); } } else { scanf("%d", &x); int s=min(x, alen); if(s)printf("%d\n", f[s]); else puts("0"); } } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=1e6+5; int a[N],b[N],top,blen,alen,f[N],sum[N]; int main() { int T;scanf("%d",&T); memset(f,-0x3f,sizeof f); sum[0]=0; while(T--) { char s[5];int x; scanf("%s",s); if(s[0]=='I') { scanf("%d",&x); a[++alen]=x; sum[alen]=sum[alen-1]+x; f[alen]=max(f[alen-1],sum[alen]); } else if(s[0]=='D') { if(alen) { a[alen]=0; f[alen]=0; sum[alen--]=-0x3f3f3f3f; } } else if(s[0]=='L') { if(alen) { b[++blen]=a[alen]; a[alen--]=0; } } else if(s[0]=='R') { if(blen) { a[++alen]=b[blen],b[blen--]=0; sum[alen]=sum[alen-1]+a[alen]; f[alen]=max(f[alen-1],sum[alen]); } } else { scanf("%d",&x); int s=min(x,alen); if(s)printf("%d\n",f[s]); else puts("0"); } } return 0; }
- 1
信息
- ID
- 1267
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 6
- 标签
- 递交数
- 119
- 已通过
- 34
- 上传者