和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;
}