Cod sursa(job #1148861)

Utilizator btcanulBotici Alexandru btcanul Data 21 martie 2014 10:45:21
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <climits>
# define MAX = 6000001
int v[6000001],n;
int s[6000001],i;
using namespace std;

int main()
{
    ifstream f("ssm.in");
    ofstream g("ssm.out");
    int imax,imin,istart,istop,k=0;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
    }
    int smax=INT_MIN;
    s[1]=v[1];
    for(i=2;i<=n;i++)
    {
        if(v[i]+s[i-1]>v[i])
        {
            s[i]=s[i-1]+v[i];
            k++;
            if(k==1)
            {
                istart=i;
            }
            else
            {
                istop=i+k-1;
            }
        }
        else
        {
            s[i]=v[i];
            k=0;
        }
        if(s[i]>smax)
        {
            imin=istart;
            imax=istop;
            smax=s[i];
        }
    }
    g<<smax<<" "<<imin-1<<" "<<imax-1<<'\n';
    return 0;
}