Pagini recente » Cod sursa (job #2453111) | Cod sursa (job #2835368) | Cod sursa (job #2844798) | Cod sursa (job #2357474) | Cod sursa (job #2451545)
#include <stdio.h>
#include <stdlib.h>
#define BSIZE 10000
char buf[10000];
int v[6000000];
int main() {
FILE *fin = fopen( "ssm.in", "r" ), *fout = fopen( "ssm.out", "w" );
int n, i, j, i2, i3, s, nr, flag;
long long max;
fscanf( fin, "%d ", &n );
nr = 0;
i = 0;
flag = 0;
while ( i < n ) {
fread( buf, 1, BSIZE, fin );
j = 0;
while ( j < BSIZE ) {
while ( j < BSIZE && ( buf[j] >= '0' && buf[j] <= '9' || buf[j] == '-' ) ) {
if ( buf[j] == '-' ) {
flag = -1;
} else {
nr = nr * 10 + buf[j] - '0';
}
j ++;
}
if ( flag == -1 && j < BSIZE ) {
nr *= -1;
flag = 0;
}
if ( j < BSIZE && ( buf[j] == ' ' || buf[j] == '\n' ) ) {
v[i] = nr;
i ++;
nr = 0;
}
j ++;
}
}
max = -1000000000000;
s = 0;
i2 = 0;
/**
for ( i = 0; i < n; i ++ ) {
fprintf( fout, "%d ", v[i] );
}
*/
for ( i = 0; i < n; i ++ ) {
if ( s < 0 ) {
s = 0;
i2 = i;
}
s += v[i];
if ( s > max ) {
max = s;
i3 = i2;
j = i;
}
}
fprintf( fout, "%lld %d %d", max, i3 + 1, j + 1 );
fclose( fin );
fclose( fout );
return 0;
}