Cod sursa(job #1161763)

Utilizator DysKodeTurturica Razvan DysKode Data 31 martie 2014 14:05:16
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#define MAXSIZE 6000010
using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int v[MAXSIZE],best[MAXSIZE],k=-2000000000,s,maxi,poz1,sol,x,y,n;

void citirea ()
{
    int i;
    fin>>n;
    for(i=1 ; i<=n ; ++i)
    {
        fin>>v[i];
        if(v[i]>k)
        {
            k=v[i];
            poz1=i;
        }
    }
}

void crearea()
{
    int i,a,b;
    for(i=1 ; i<=n ; ++i)
    {
        best[i]=v[i];
        a=i;
        while(best[i]>0 && i<=n)
        {
            ++i;
            best[i]=v[i]+best[i-1];
            b=i;
            if((best[i]>maxi) || (best[i]==maxi && b-a==y-x && v[a]<v[x]) )
            {
                x=a;
                y=b;
                maxi=best[i];
            }
        }
    }
}




int main()
{
    citirea();
    crearea();
    if(maxi>0)
        fout<<maxi<<" "<<x<<" "<<y;
    else
        fout<<k<<" "<<poz1<<" "<<poz1;

fin.close();
fout.close();
return 0;
}