Pagini recente » Cod sursa (job #1196534) | Cod sursa (job #1894097) | Cod sursa (job #592580) | Cod sursa (job #50498) | Cod sursa (job #2028862)
#include <cstdio>
const int INFINIT = ( ( 1 << 31 ) - 1 );
int main(){
FILE *fin, *fout;
fin = fopen( "ssm.in", "r" );
fout = fopen( "ssm.out", "w" );
int n, i, x, suma,
minim, pozitia_minimului,
suma_maximala, inceput, sfarsit;
fscanf( fin, "%d", &n );
minim = suma = 0;
pozitia_minimului = -1;
suma_maximala = (-1)*INFINIT;
for ( i = 0; i < n; i++ ){
fscanf( fin, "%d", &x );
suma += x;
if ( suma - minim >= suma_maximala ) {
suma_maximala = suma - minim;
inceput = pozitia_minimului;
sfarsit = i;
}
if ( suma < minim ) {
minim = suma;
pozitia_minimului = i;
}
}
fprintf( fout, "%d\n%d %d", suma_maximala, inceput + 2, sfarsit + 1);
fclose( fin );
fclose( fout );
}