Cod sursa(job #2683850)

Utilizator cristiWTCristi Tanase cristiWT Data 12 decembrie 2020 10:33:58
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

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

struct suma
{
    int sum, i, j;
}dp[6000010];

int n, v[6000010], s, pi, pj;

int main()
{
    f >> n;
    for (int i=1; i<=n; i++)
        f >> v[i];

    dp[1].sum = v[1], dp[1].i = 1;
    for (int i=2; i<=n; i++)
    {
        if (dp[i-1].sum + v[i] >= 0)
            dp[i].sum = dp[i-1].sum + v[i], dp[i].j = dp[i-1].j + 1, dp[i].i = dp[i-1].i;
        else dp[i].sum = v[i], dp[i].i = i, dp[i].j = i;
    }

    /*for (int i=1; i<=n; i++)
        g << dp[i].sum << ' ';
    g << '\n';*/

    int s = 0;
    for (int i=1; i<=n; i++)
        if (s < dp[i].sum)
            s = dp[i].sum, pi = dp[i].i, pj = dp[i].j;

    g << s << ' ' << pi << ' ' << pj << '\n';
}