Cod sursa(job #1127545)
| Utilizator | Data | 27 februarie 2014 12:51:43 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.7 kb |
#include <stdio.h>
#include <algorithm>
#define maxn 6000000
int n, suma[maxn], s, i1, i2, idx;
int main()
{
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
scanf("%d", &n);
s=-int(2e9);
int x;
scanf("%d", &x);
suma[1]=x;
for(int i=2;i<=n;i++)
{
scanf("%d", &x);
if(x>x+suma[i-1])
{
suma[i]=x;
idx=i;
}
else
{
suma[i]=x+suma[i-1];
}
if(suma[i]>s)
{
s=suma[i];
i2 = i;
i1=idx;
}
}
if(i1>i2)
{
i1=i2;
}
printf("%d %d %d", s, i1, i2);
}
