Cod sursa(job #1526430)

Utilizator tc_iuresiures tudor-cristian tc_iures Data 16 noiembrie 2015 11:39:35
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>

using namespace std;

const int Nmax = 6000005;
const int INF  = 2000000000;

int iMax, jMax, sMax, Min;
int D[Nmax], N;
int sum[Nmax], best[Nmax];

void citire()
{
   ifstream f("date.in");
   f >> N;
   for(int i = 1; i <= N; i ++)
   {
      f >> D[i];
   }
   f.close();
}

void solve()
{
   sum[0] = 0;
   for(int i = 1; i <= N; i ++)
   {
      sum[i] = sum[i-1]+D[i];
   }
   Min  = sum[0];
   int iMin = 1;
   sMax = -INF;
   for(int i = 1; i <= N; i ++)
   {
      best[i] = sum[i] - Min;
      if(sum[i] < Min)
      {
         Min = sum[i];
         iMin = i;
      }
      if(best[i] > sMax)
      {
         sMax = best[i];
         jMax = i;
         iMax = iMin+1;
      }
   }
}

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

int main()
{
    citire();
    solve();
    print();
    return 0;
}