Pagini recente » Cod sursa (job #1766147) | Cod sursa (job #2912543) | Cod sursa (job #1620380) | Cod sursa (job #3281129) | Cod sursa (job #2032884)
#include <stdio.h>
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, best,
stanga, dreapta,
suma_maximala, inceput, sfarsit;
fscanf( fin, "%d", &n );
best = inceput = 0;
suma_maximala = (-1)*INFINIT;
for ( i = 0; i < n; i++ ){
fscanf( fin, "%d", &x );
if ( x < best + x ){
best += x;
dreapta = i;
}
else{
best = x;
stanga = dreapta = i;
}
if( suma_maximala < best ){
suma_maximala = best;
inceput = stanga;
sfarsit = dreapta;
}
}
fprintf( fout, "%d %d %d", suma_maximala, inceput + 1, sfarsit + 1);
fclose( fin );
fclose( fout );
}