Cod sursa(job #2558548)

Utilizator anabatAna Batrineanu anabat Data 26 februarie 2020 17:19:18
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <stdio.h>
using namespace std;

#define NMAX 6000000
int s[NMAX+5];
int l[NMAX+5];

int max (int a,int b){
  if(a>b){
    return a;
  }
  return b;
}

int main()
{
  FILE *fin,*fout;
  fin=fopen("ssm.in","r");
  fout=fopen("ssm.out","w");

  int n,i,MAX,inceput,sfarsit,MIN,v;
  fscanf(fin,"%d",&n);

  for(i=1;i<=n;i++){
    fscanf(fin,"%d",&v);
    s[i]=max(s[i-1]+v,v);
    if(s[i]==s[i-1]+v){
      l[i]=l[i-1]+1;
    }
    else{
      l[i]=1;
    }
  }
  MAX=-1;
  MIN=6000000;
  for(i=1;i<=n;i++){
    if(s[i]>MAX){
      MAX=s[i];
      MIN=l[i];
      inceput=i-l[i];
      sfarsit=i;
    }
    if(s[i]==MAX&&l[i]<MIN){
      inceput=i-l[i];
      sfarsit=i;
    }
  }
  fprintf(fout,"%d %d %d",MAX,inceput+1,sfarsit);

  fclose(fin);
  fclose(fout);
  return 0;
}