Pagini recente » Diferente pentru utilizator/ada4u intre reviziile 3 si 1 | Diferente pentru utilizator/gabrielac intre reviziile 1 si 2 | Diferente pentru utilizator/cyby intre reviziile 3 si 2 | Diferente pentru utilizator/ada4u intre reviziile 1 si 2 | Cod sursa (job #1604606)
#include <stdio.h>
#include <stdlib.h>
#define IN "ssm.in"
#define OUT "ssm.out"
#define NMAX 6000001
#define INT_MIN (1 << (sizeof (int) * 8 - 1))
int n, v[NMAX];
inline void read (void){
int i;
scanf ("%d", &n);
for (i = 1; i <= n; ++ i)
scanf ("%d", &v[i]);
}
void best (void){
int bestSum, start0, start, stop, i, sum;
bestSum = INT_MIN, sum = 0, start0 = 1;
for (i = 1; i <= n; ++ i){
if (sum < 0){
sum = v [i];
start0 = i;
}
else{
sum += v[i];
}
if (bestSum < sum){
start = start0;
stop = i;
bestSum = sum;
}
}
printf ("%d %d %d\n", bestSum, start, stop);
}
int main()
{
freopen (IN, "r", stdin);
freopen (OUT, "w", stdout);
read ();
best ();
fclose (stdin);
fclose (stdout);
return 0;
}