代码改变世界

[HDU 1003]Max Sum

2012-10-07 22:41  AseoRoy  阅读(223)  评论(0)    收藏  举报
#include <stdlib.h>
#include <stdio.h>

/*
maxsum[0] = a[0]
maxsum[i] = max(maxsum[i - 1] + a[i], a[i]) | i = [1, N]
*/

int main(void)
{
	int a, b;
	long sum;
	unsigned int i;
	unsigned int l, lt, r;
	unsigned int T, N, C;
	scanf("%d", &T);
	C = T;
	while (T--) {
		l = lt = r = 0;
		scanf("%d", &N);
		for (i = 0; i < N; i++) {
			scanf("%d", &a);
			if (i == 0) {
				b = a;
				sum = b;
			} else {
				if (b < 0) {
					lt = i;
					b = a;
				} else {
					b += a;
				}
				if (sum < b) {
					sum = b;
					r = i;
					l = lt;
				}
			}
		}
		printf("Case %d:\n%d %d %d\n", C - T, sum, l + 1, r + 1);
		if (T != 0) {
			putchar('\n');
		}
	}
	return EXIT_SUCCESS;
}