Cod sursa(job #1694284)

Utilizator PaulCristian123Sichet Paul-Cristian PaulCristian123 Data 25 aprilie 2016 09:09:30
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define INFINIT -2000000000
#define DIMMAX 6000000
using namespace std;
long int v[DIMMAX+2],s[DIMMAX+2];
int main()
{  long int sum,i,n,poz,pfin,lunmax;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
  sum=INFINIT;
  fin>>n;
  for (i=1;i<=n;++i) {
      fin>>v[i];
      if (i==1) {
        s[i]=v[i];
        poz=i;
      }
      else if (i==2) {
        s[i]=s[i-1]+v[i];
        if (s[i]>sum) {
            sum=s[i];
            lunmax=i;
            pfin=i;
        }
      }
      else if (i>2) {
        s[i]=max(s[i-1]+v[i],v[i-1]+v[i]);
        if (v[i-1]+v[i]==s[i] && s[i-1]+v[i]<s[i]) poz=i-1;
         if (s[i]>sum) {
            sum=s[i];
            lunmax=i-poz+1;
            pfin=i;
         }
         else if (sum==s[i] && i-poz+1>lunmax) {
            lunmax=i-poz+1;
            pfin=i;
         }
      }
  }
    fout<<sum<<" "<<poz<<" "<<pfin<<"\n";
    return 0;
}