Cod sursa(job #1009738)

Utilizator lolmanDomuta Dariu lolman Data 13 octombrie 2013 19:07:29
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <limits>
using namespace std;
int n,pre[6000001], best,i,a,b,c,maxim = std::numeric_limits<int>::min(),v[6000001];
int main()
{
    ifstream f("ssm.in");
    ofstream g("ssm.out");
    f>>n;
    for (i=1;i<=n;i++)
          f>>v[i];
    best=v[n];
    pre[n]=n;
    for (i=n-1;i>=1;i--)
         if (v[i]+best>v[i])
               {
                   best=v[i]+best;
                   pre[i]=pre[i+1];
                   if (best>maxim)
                       {
                           maxim=best;
                           a=maxim;
                           b=i;
                           c=pre[i+1];
                       }
               }
         else
               {
                   if (best>maxim)
                       {
                           maxim=best;
                           a=maxim;
                           b=i+1;
                           c=pre[i+1];
                       }
                   best=v[i];
                   pre[i]=i;
               }
    g<<a<<" "<<b<<" "<<c;
    return 0;
}