Cod sursa(job #2451545)

Utilizator Tudor06MusatTudor Tudor06 Data 27 august 2019 10:47:11
Problema Subsecventa de suma maxima Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <stdio.h>
#include <stdlib.h>
#define BSIZE 10000

char buf[10000];
int v[6000000];

int main() {
  FILE *fin = fopen( "ssm.in", "r" ), *fout = fopen( "ssm.out", "w" );
  int n, i, j, i2, i3, s, nr, flag;
  long long max;
  fscanf( fin, "%d ", &n );
  nr = 0;
  i = 0;
  flag = 0;
  while ( i < n ) {
    fread( buf, 1, BSIZE, fin );
    j = 0;
    while ( j < BSIZE ) {
      while ( j < BSIZE && ( buf[j] >= '0' && buf[j] <= '9' || buf[j] == '-' ) ) {
        if ( buf[j] == '-' ) {
          flag = -1;
        } else {
          nr = nr * 10 + buf[j] - '0';
        }
        j ++;
      }
      if ( flag == -1 && j < BSIZE ) {
        nr *= -1;
        flag = 0;
      }
      if ( j < BSIZE && ( buf[j] == ' ' || buf[j] == '\n' ) ) {
        v[i] = nr;
        i ++;
        nr = 0;
      }
      j ++;
    }
  }
  max = -1000000000000;
  s = 0;
  i2 = 0;
  /**
  for ( i = 0; i < n; i ++ ) {
    fprintf( fout, "%d ", v[i] );
  }
  */
  for ( i = 0; i < n; i ++ ) {
    if ( s < 0 ) {
      s = 0;
      i2 = i;
    }
    s += v[i];
    if ( s > max ) {
      max = s;
      i3 = i2;
      j = i;
    }
  }
  fprintf( fout, "%lld %d %d", max, i3 + 1, j + 1 );
  fclose( fin );
  fclose( fout );
  return 0;
}