Cod sursa(job #2028864)

Utilizator BarbumateiBarbu Matei Barbumatei Data 28 septembrie 2017 19:20:23
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#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 %d %d", suma_maximala, inceput + 2, sfarsit + 1);
  fclose( fin );
  fclose( fout );
}