Cod sursa(job #1059269)

Utilizator mcip1977Muresan Ciprian mcip1977 Data 16 decembrie 2013 15:23:56
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n,i,x,s[6000001],maxx=-0x3f3f3f3f,im,jm;
int main()
{

    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        s[i]=x;
        if(s[i]<s[i-1]+x) s[i]=s[i-1]+x;
        if(s[i]>maxx)
        {  maxx=s[i];
           jm=i;
        }
        else if(s[i]==maxx)
            {
                im=jm;
                while(im>0 && s[im]>=0) im--;
                int imv=im;
                im=i;
                while(im>0 && s[im]>=0) im--;
                if(i-im<jm-imv)
                {   maxx=s[i];
                    jm=i;
                }
            }
    }
    if(maxx>0)
    {
    fout<<maxx<<" ";
    im=jm;
    while(im>0 && s[im]>=0) im--;
    im++;
    fout<<im<<" "<<jm;
    }
    else fout<<maxx<<" "<<jm<<" "<<jm;
    return 0;
}