Cod sursa(job #1770251)

Utilizator TherevengerkingSurani Adrian Therevengerking Data 3 octombrie 2016 22:30:08
Problema Subsecventa de suma maxima Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int s[6000001];
int bst[6000001];
int l[6000001];
int main()
{
    int n,i,max,min=999999999,c;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>s[i];
    bst[1]=s[1];
    l[1]=1;
    max=-999999999;
    for(i=2;i<=n;i++)
    {
        if(bst[i-1]+s[i]>=s[i])
        {
           bst[i]=bst[i-1]+s[i];
           l[i]=l[i-1];
        }
        else
        {
            bst[i]=s[i];
            l[i]=i;
        }
        if(bst[i]>max)
            max=bst[i];
    }
    fout<<max<<" ";
    for(i=1;i<=n;i++)
    {
        if(bst[i]==max)
        {
            if(l[i]<min)
            {
                min=l[i];
                c=i-l[i];
            }
            else
                if(l[i]==min)
                {
                    if(i-l[i]<c)
                        c=i-l[i];
                }
        }
    }
    for(i=1;i<=n;i++)
    {
        if(i-l[i]==c)
            fout<<l[i]<<" "<<i;
    }
    return 0;
}