Pagini recente » Cod sursa (job #1024305) | Cod sursa (job #2899423) | Cod sursa (job #1141061) | Cod sursa (job #498122) | Cod sursa (job #2032888)
#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 );
}