Cod sursa(job #2814403)

Utilizator LuciBBadea Lucian LuciB Data 8 decembrie 2021 00:32:50
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

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, i, elem, max, s, st, dr, stfinal, drfinal;
  fin=fopen("ssm.in", "r");
  n = readInt();
  //printf("%d\n", n);
  max=-2147483647;
  st=1;
  dr=0;
  stfinal=drfinal=s=0;
  for(i=1; i<=n; i++){
    elem = readInt();
    //printf("%d\n", elem);
    if(s<0){
      s=elem;
      st=dr=i;
    }else{
      dr++;
      s=s+elem;
    }
    if(s>max){
      max=s;
      stfinal=st;
      drfinal=dr;
    }
  }
  fout=fopen("ssm.out", "w");
  fprintf(fout, "%d %d %d", max, stfinal, drfinal);
  fclose(fout);
  return 0;
}