简单维护前导和
1 #include<stdio.h> 2 int main() 3 { 4 int sum,a[100005],cas,key=1; 5 scanf("%d",&cas); 6 while(cas--){ 7 int n,i,max_sum,max_index,min_index,keyl; 8 scanf("%d%d",&n,&a[0]); 9 max_sum=sum=a[0]; 10 keyl=0; 11 max_index=min_index=1; 12 if(sum<0){sum=0;keyl=1;} 13 for(i=1;i<n;i++){ 14 scanf("%d",&a[i]); 15 sum+=a[i]; 16 if(sum>max_sum){ 17 max_sum=sum; 18 max_index=i+1; 19 min_index=keyl+1; 20 } 21 if(sum<0){ 22 sum=0; 23 keyl=i+1; 24 } 25 } 26 printf("Case %d: ",key++); 27 printf("%d %d %d ",max_sum,min_index,max_index); 28 if(cas)printf(" "); 29 } 30 return 0; 31 }