Cod sursa(job #1589077)

Utilizator Marius200099Fica Marius Marius200099 Data 3 februarie 2016 19:26:28
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
/* varianta noua
#include <fstream>

using namespace std;

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

int main()
{
    int n,s,maxx,st,dr,nr,p;
    in>>n;
    s=0;
    maxx=-12345678;
    for(int i=1;i<=n;i++)
    {
        in>>nr;
        if(s<0)
        {
            s=0;
            p=i;
        }
        s=s+nr;
        if(maxx<s)
        {
            maxx=s;
            st=p;
            dr=i;
        }
    }


out<<maxx<<" "<<st<<" "<<dr;

return 0;
}
*/
// varianta acas

#include <fstream>

using namespace std;

int v[6000000],n;

int main()
{
    int smax,stmax,drmax,i,s,st;
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");

    fin>>n;
    for(i=1;i<=n;++i)
        fin>>v[i];
    smax=v[1];
    s=v[1];
    st=1;
    stmax=1;
    drmax=1;
    for(i=2;i<=n;++i)
    {
        s+=v[i];
        if(s>smax)
        {
            smax=s;
            stmax=st;
            drmax=i;
        }
        if(s<0)
        {
            st=i+1;
            s=0;
        }
    }
    fout<<smax<<" "<<stmax<<" "<<drmax<<"\n";

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