Cod sursa(job #901315)

Utilizator BogdanOuatuOuatu Bogdan-Ioan BogdanOuatu Data 1 martie 2013 09:38:53
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[6000000];
int main()
{
    int i, st, dr, sum=0, n,stm,drm,summ;
    ifstream fin ("ssm.in");
    fin>>n;
    for (i=1; i<=n;i++)
        fin>>a[i];
    fin.close();
    st=dr=stm=drm=1;
    sum=summ=a[1];
    while(dr!=n)
    {
        if(sum<=0)
            {st=dr=dr+1;
            sum=a[st];
            if(sum>summ||(sum==summ&&stm!=drm))
                {summ=sum;stm=drm=st;}
            }
        else
            {
                dr++;
                sum+=a[dr];
                if(sum>summ||(sum==summ&&(dr-st<drm-stm)))
                    {
                        summ=sum;
                        stm=st;
                        drm=dr;
                    }
            }
    }
    ofstream fout("ssm.out");
    fout<<summ<<" "<<stm<<" "<<drm<<"\n";

    return 0;
}