Cod sursa(job #2818736)

Utilizator vladburacBurac Vlad vladburac Data 16 decembrie 2021 19:32:15
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#define INFINIT 2147483647
using namespace std;

FILE *fin, *fout;
int readInt() {
  int n, semn = 1;
  char ch;
  while( ch != '-' && !isdigit ( ch = fgetc( fin ) ) );
  if( ch == '-' ) {
    semn = -1;
    ch = fgetc( fin );
  }
  n = 0;
  do {
    n = n * 10 + ch - '0';
  }while( isdigit( ch = fgetc( fin ) ) );
  return n * semn;
}

int main() {
  int n, a, s, st, dr, len, i, smax;
  fin = fopen( "ssm.in", "r" );
  n = readInt();
  s = 0;
  st = dr = len = 0;
  smax = -INFINIT;
  for( i = 0; i < n; i++ ) {
    a = readInt();
    if( s >= 0 ) {
      s += a;
      len++;
    }
    else {
      s = a;
      len = 0;
    }
    if( s > smax ) {
      smax = s;
      dr = i;
      st = dr - len;
    }
  }
  fclose( fin );
  fout = fopen( "ssm.out", "w" );
  fprintf( fout, "%d %d %d", smax, st + 1, dr + 1 );
  fclose( fout );
  return 0;
}