Cod sursa(job #903334)
| Utilizator | Data | 1 martie 2013 20:06:22 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
int main (void)
{
std::freopen("ssm.in","r",stdin);
std::freopen("ssm.out","w",stdout);
int n, x;
std::scanf("%d",&n);
int i, begin, last, start, end, sum(-1), best(-1 << 30);
for (i = 1 ; i <= n ; ++i)
{
std::scanf("%d",&x);
if (sum >= 0)
{
sum += x;
++end;
}
else
{
sum = x;
begin = end = i;
}
if (sum > best)
{
start = begin;
last = end;
best = sum;
}
}
std::printf("%d %d %d\n",best,start,last);
std::fclose(stdin);
std::fclose(stdout);
return 0;
}
