Max Sum(HDOJ1003)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003

#include<stdio.h>
struct Node { int max; int start; int end; }; int arr[100001]; Node node[100001]; int main() { int count,num,Max; scanf("%d",&count); for(int cases=1;cases<=count;cases++) { scanf("%d",&num); scanf("%d",&node[1].max); node[1].start=1; node[1].end=1; Max=node[1].max; int mark=1; for(int i=2;i<=num;i++) { scanf("%d",&arr[i]); if(node[i-1].max+arr[i]>=arr[i]) { node[i].max=node[i-1].max+arr[i]; node[i].start=node[i-1].start; } else { node[i].max=arr[i]; node[i].start=i; } node[i].end=i; if(node[i].max>Max) { Max=node[i].max; mark=i; } } printf("Case %d:\n",cases); printf("%d %d %d\n",node[mark].max,node[mark].start,node[mark].end); if(cases!=count) printf("\n"); } }
posted @ 2013-04-03 23:01  supersnow0622  Views(133)  Comments(0)    收藏  举报