Cod sursa(job #1416929)

Utilizator Coroian_DavidCoroian David Coroian_David Data 9 aprilie 2015 09:28:36
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.58 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int v[6000001],n,i,p,x,s,stx,st,drx,mx,mn=-999999;
bool ok;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {

        f>>v[i];
        if(v[i]>=0)
            ok=1;
        if(v[i]>mn)
        {
            mn=v[i];
            p=i;
        }
    }
    if(ok)
    {
        for(st=1,i=1;i<=n;i++)
        {
            //cout<<mx<<" "<<stx<<" "<<drx<<" "<<i<<'\n';
            if(s<0)
            {
                st=i;
               // cout<<"*"<<st<<" ";
                s=v[i];
                //cout<<v[i]<<'\n';
            }
            else
            {
                s=s+v[i];
               // cout<<s<<" "<<v[i]<<'\n';
                if(mx<s)
                {
                    mx=s;
                    stx=st;//cout<<"++"<<i<<'\n';
                    drx=i;
                }
                else
                    if(s==mx)
                    {
                        if(st<stx)
                        {
                            stx=st;
                            drx=i-st+1;
                        }
                        else
                            if(stx==st)
                            {
                                if(i-st+1<drx)
                                    drx=i-st+1;
                            }
                    }
            }
        }
        g<<mx<<" "<<stx<<" "<<drx<<'\n';
    }
    else
        g<<mn<<" "<<p<<" "<<p<<'\n';
    f.close();
    g.close();
    return 0;
}