Cod sursa(job #1312694)

Utilizator adiXMGemene Adrian adiXM Data 9 ianuarie 2015 20:52:40
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int a[100005];
int s[100005];
int st[100005];
int v[100005];
int main()
{
    int n,i,k,maax=-200000000,stanga=0,dreapta,sumf=0,sum=0,miin=0;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i];
        s[i]=s[i-1]+a[i];
    }
    for(i=1;i<=n;i++)
    {
        v[i]=s[i]-s[stanga];
        st[i]=stanga+1;
        if(miin<s[i])
        {
            miin=s[i];
            stanga=i;
        }
    }
    for(i=1;i<=n;i++)
    {
        if(v[i]>maax)
        {
            maax=v[i];
            stanga=st[i];
            dreapta=i;
        }
        else
            if(v[i]==maax)
            {
                int drp=i,stp=st[i];
                if(stp<stanga)
                {
                    stanga=stp;
                    dreapta=i;
                }
                else
                    if(stp==stanga && drp<dreapta)
                        dreapta=i;

            }

    }
    /*for(i=stanga;i<=dreapta;i++)
    {
            a[i]=a[i]*(-1);
            sum+=a[i];
    }
    for(i=dreapta+1;i<=n;i++)
        sumf+=a[i];
    for(i=1;i<=stanga-1;i++)
            sumf+=a[i];
    g<<stanga<<" "<<dreapta<<"\n"<<sumf+sum;*/
    g<<maax<<" "<<stanga<<" "<<dreapta;
    return 0;
}