OJ-Problems-Source/HDOJ/1003_XXXX.cpp
2016-07-20 13:08:11 +08:00

51 lines
927 B
C++

#include <cstdio>
using namespace std;
#define MAXN 100005
typedef struct{ int s, l, r; }Sum;
Sum MaxSub(int a[], int n);
int main(void)
{
int ar[MAXN], c, n, i, j;
Sum x = {0, 0, 0};
scanf("%d", &c);
for(i = 1; i <= c; i++)
{
scanf("%d", &n);
for(j = 1; j <= n; j++)
scanf("%d", &ar[j]);
x = MaxSub(ar, n);
printf("Case %d:\n%d %d %d", i,x.s, x.l, x.r);
if(i != c) printf("\n\n");
else printf("\n");
}
}
Sum MaxSub(int a[], int n)
{
int i, s = 0, l = 1, r = 1, b;
Sum sum = {a[1], 0, 0};
for(i = 1; i <= n; i++)
{
if(s >= 0)
{
s += a[i];
if(a[i] > 0) r = i;
}
else
{
s = a[i];
r = l = i;
}
if(s >= sum.s)
{
sum.s = s;
sum.l = l;
sum.r = r;
}
}
return sum;
}