Cod sursa(job #2869861)

Utilizator Seress26Seres Artur Seress26 Data 11 martie 2022 21:24:22
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 6000001
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int st,fin,n,v[NMAX];
void Citire()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
}
void Rezolvare()
{
    vector <int> dp(n+1);
    dp[1]=v[1];
    for(int i=2;i<=n;i++)
    {
        if(dp[i-1]>=0)
            dp[i]=dp[i-1]+v[i];
        else
            dp[i]=v[i];

    }
    int maxi=0;
    int ok=0;
    for(int i=1;i<=n;i++)
    {
        cout<<dp[i]<<' ';
        if(maxi<dp[i])
        {
            maxi=dp[i];
            fin=i;
        }
    }
    for(int i=fin;i>=1;i--)
    {
        if(dp[i]<0)
        {
            st=i+1;
            ok=1;
            break;
        }
    }
    if(ok==0)
        st=1;
    g<<maxi<<' '<<st<<' '<<fin;
}
int main()
{
    Citire();
    Rezolvare();

    return 0;
}