Cod sursa(job #2168256)

Utilizator CodCatalinCodreanu Catalin CodCatalin Data 14 martie 2018 10:10:51
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

int n,v[6000003],s[6000003],in,sf,ind=1,sum,inc[6000003],sMax,p1,p2;
int main()
{
    f>>n;inc[1]=1;
    for(int i=1;i<=n;++i)
    {
        f>>v[i];
        if(v[i]>0&&s[ind]>=0)s[ind]+=v[i];
        else if(v[i]<0&&s[ind]<=0)s[ind]+=v[i];
        else ind++,inc[ind]=i,s[ind]=v[i];
    }
    inc[ind+1]=n;in=1;
    for(int i=1;i<=ind;++i)
    {
        if(sum+s[i]<0)
        {
            if(sum>sMax)
            {
                sMax=sum;
                p1=in;p2=inc[i+1]-1;
            }
            in=i+1;sum=0;
        }
        else sum+=s[i];
        if(sum>sMax)
        {
            sMax=sum;
            p1=in;p2=inc[i+1]-1;
        }
    }
    g<<sMax<<" "<<p1<<" "<<p2<<'\n';
    return 0;
}