Mai intai trebuie sa te autentifici.
Cod sursa(job #478764)
Utilizator | Data | 20 august 2010 12:23:47 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <stdio.h>
#define N 6000000
int v[N];
void ssm(int n)
{
int i, s = v[0], max = v[0], ok = 0, aux;
int start = 0, stop = 0;
for (i = 1; i < n; i++)
{
aux = max + v[i];
if (aux > v[i])
max = aux;
else
{
max = v[i];
ok = i;
while (v[ok - 1] == 0) ok--;
}
if (max > s)
{
s = max;
stop = i;
start = ok;
}
}
printf("%d %d %d\n", s, start + 1, stop + 1);
}
int main()
{
int n, i;
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &v[i]);
ssm(n);
return 0;
}