Cod sursa(job #1113746)

Utilizator addy01adrian dumitrache addy01 Data 20 februarie 2014 21:09:23
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.49 kb
#include <iostream>
#include <fstream>
#define maxn 6000010
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int n,v[maxn];
//int s[maxn];
int best[maxn];
inline int maxim(int a,int b)
{
    if(a<b)
        return b;
    return a;
}
int main()
{
    int i,beg=1,sf=1;
    in>>n;
   // s[0]=0;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
      //  s[i]=s[i-1]+v[i];
    }

for(i=1;i<=n;i++)
    if(v[i]<best[i-1]+v[i])
    {
        best[i]=best[i-1]+v[i];
        sf++;
    }
    else
    {
        best[i]=v[i];
        beg=i;
        sf=beg;
        }
        int m=best[1];
        for(i=2;i<=n;i++)
            if(best[i]>m)
                m=best[i];
        out<<m;

out<<" "<<beg<<" "<<sf-1;


    /*
int minim=s[1];
best[1]=s[1];
    for(i=2;i<=n;i++)
       {
            if(s[i-1]<minim)
                minim=s[i-1];
                if(v[i]<0)
                    best[i]=maxim(s[i]-minim,maxim(s[i],best[i-1]));
                else
                    best[i]=maxim(s[i]-minim,s[i]);
       }
       int m=best[1],poz=1;
       for(i=2;i<=n;i++)
        if(best[i]>m)
        {
            m=best[i];
            poz=i;
            }
            cout<<m<<" ";
            best[0]=1<<30;
            for(i=poz;i>=1;i--)
            {
                if(best[i]<best[i-1])
                {
                    cout<<i<<" "<<poz;
                    return 0;
                }
            }*/
    return 0;
}