Mai intai trebuie sa te autentifici.
Cod sursa(job #2032914)
Utilizator | Data | 5 octombrie 2017 21:09:33 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#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, suma, last,
suma_maximala, inceput, sfarsit;
fscanf( fin, "%d", &n );
suma = last = 0;
///last denota de unde incepe secventa
suma_maximala = (-1)*INFINIT;
for ( i = 0; i < n; i++ ){
fscanf( fin, "%d", &x );
suma += x;
if ( suma >= suma_maximala ) {
suma_maximala = suma;
inceput = last;
sfarsit = i;
}
if( suma < 0 ){
suma = 0;
last = i + 1;
}
}
fprintf( fout, "%d %d %d", suma_maximala, inceput + 1, sfarsit + 1);
fclose( fin );
fclose( fout );
}