HDU1003前导和

简单维护前导和

 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:\n",key++);
27         printf("%d %d %d\n",max_sum,min_index,max_index);
28         if(cas)printf("\n");
29     }
30     return 0;
31 }

 

posted @ 2013-09-12 22:08  再见~雨泉  阅读(216)  评论(0编辑  收藏  举报