Cod sursa(job #1526696)

Utilizator tc_iuresiures tudor-cristian tc_iures Data 17 noiembrie 2015 01:49:37
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>

using namespace std;

const int INF  = 2000000000;
const int NMax = 6000005;

int D[NMax], sMax, iMax, jMax, sum, minim, N;
bool poz;

void read()
{
   ifstream f("ssm.in");
   f >> N;
   int i;
   poz = false;
   for(i = 1; i <= N; i ++)
   {
      f >> D[i];
      if(D[i] >= 0)
      {
         poz = true;
      }
   }
   f.close();
}

void ssm()
{
   if(poz)
   {
      sum = 0;
      minim = 0;
      sMax = -INF;
      for(int i = 1; i <= N; i ++)
      {
         sum = sum + D[i];
         if(sum-minim > sMax)
         {
            sMax = sum-minim;
            jMax = i;
         }
         if(sum < minim)
         {
            minim = sum;
            iMax = i+1;
         }
      }
   }
   else
   {
      sMax = -INF;
      for(int i = 1; i <= N; i ++)
      {
         if(D[i] > sMax)
         {
            sMax = D[i];
            iMax = i;
            jMax = i;
         }
      }
   }

}

void print()
{
   ofstream g("ssm.out");
   g << sMax << " " << iMax << " " << jMax;
   g.close();
}

int main()
{
    read();
    ssm();
    print();
    return 0;
}