Cod sursa(job #2969419)

Utilizator nicholas9onicaOnica Nicholas Andrei nicholas9onica Data 22 ianuarie 2023 23:29:05
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int v[6000001],dp[6000001];
int main()
{
    int n,i,j,sum=0,st=1,dr=1,pozi,pozf,maxn=0,pozim;
    int max2=-6000002;
    fin>>n;
    int ok=0;
    for(i=1; i<=n; i++)

    {
        fin>>v[i];
        if(v[i]>max2)
        {
            max2=v[i];
            pozim=i;
        }
        if(v[i]>=0)
            ok=1;
    }
    if(ok==0)
    {
        fout<<max2<<" "<<pozim<<" "<<pozim;
    }
    else
    {

        for(dr=1; dr<=n; dr++)
        {
            if(dr>1)
                dp[dr]=dp[dr-1]+v[dr];
            else
                dp[dr]=v[dr];
            if(dp[dr]>=0)
            {
                if(dp[dr]>maxn)
                {
                    maxn=dp[dr];
                    pozi=st;
                    pozf=dr;
                }
            }
            else
            {
                dp[dr]=0;
                st=dr+1;
            }
        }
        fout<<maxn<<" "<<pozi<<" "<<pozf;
    }
}