Cod sursa(job #2854692)

Utilizator Seress26Seres Artur Seress26 Data 21 februarie 2022 17:45:59
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <cmath>
#include <fstream>
#include <vector>

using namespace std;

ifstream f("ssm.in");
ofstream g("ssm.out");
long long n,v[6000001],i,j,sol,s1,f1;
void Citire()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
}
void SSM()
{
    vector<int> dp(n+1);
    vector<int> s(n+1);
    vector<int> f(n+1);
    dp[1]=v[1];
    s[1]=1;
    f[1]=1;
    j=1;
    for(i=2;i<=n;i++)
    {
        if(dp[i-1]>=0)
        {
            dp[i]=dp[i-1]+v[i];
            f[i]=i;
            s[i]=j;
        }
        else
        {
            dp[i]=v[i];
            j=i;
        }
    }
    sol=dp[1];
    for(i=2;i<=n;i++)
    {
        if(dp[i]>sol)
        {
            sol=dp[i];
            s1=s[i];
            f1=f[i];
        }

    }
}
void Afisare()
{
    g<<sol<<' ';
    g<<s1<<' ';
    g<<f1;
}
int main()
{
    Citire();
    SSM();
    Afisare();

    return 0;
}