和1231几乎一样嘛…… 就是处理位置的时候改个等号
然后PE的我心塞塞,总算是找对姿势了。
#include <stdio.h> #define ll long long #define maxn 100010 int a[maxn]; typedef struct node { ll sum; int l,r; }node; node ans[2]; int main() { int T; int cas=0; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); int i; node max; for(i=0;i<n;i++) { scanf("%d",&a[i]); } ans[0].sum=a[0]; ans[0].l=ans[0].r=1; max=ans[0]; int pre=0,now=1; for(i=1;i<n;i++) { if(ans[pre].sum>=0) //这里要有等于号! { ans[now].sum=ans[pre].sum+a[i]; ans[now].l=ans[pre].l; ans[now].r=i+1; } else { ans[now].sum=a[i]; ans[now].l=ans[now].r=i+1; } if(ans[now].sum>max.sum) max=ans[now]; pre=!pre; now=!now; } cas++; printf("Case %d:\n",cas); if(T) printf("%lld %d %d\n\n",max.sum,max.l,max.r); else printf("%lld %d %d\n",max.sum,max.l,max.r); } return 0; }