Cod sursa(job #2683842)

Utilizator cosmin395dimofte cosmin cosmin395 Data 12 decembrie 2020 10:30:57
Problema Subsecventa de suma maxima Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
struct poz
{
    int x,d,s;
};
poz dp[6000001];
int n,v[6000001],s,i,st,dr;

int main()
{

    fin>>n;

    for(i=1; i<=n; i++)
        fin>>v[i];

    dp[1].x=v[1];

    for(i=2; i<=n; i++)
    {
        if(dp[i-1].x+v[i]>0 && dp[i-1].x>0)
        {
            dp[i].x=dp[i-1].x+v[i];
            dp[i].s=dp[i-1].s;
            dp[i].d=i;
        }
        else
        {
            dp[i].x=v[i];
            dp[i].s=i;
            dp[i].d=i;
        }
    }

    for(i=1; i<=n; i++)
        {
            //cout<<dp[i].x<<' ';
            if(s<dp[i].x)
            {
                s=dp[i].x;
                st=dp[i].s;
                dr=dp[i].d;
            }
        }

    fout<<s<<' '<<st<<' '<<dr;
    return 0;
}