Cod sursa(job #2909470)

Utilizator ciutacu_tudorTudor Ciutacu ciutacu_tudor Data 13 iunie 2022 20:45:18
Problema Subsecventa de suma maxima Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int N, v[6000000];
int DP[6000000], best[6000000];

void solutie() {
    int i, minim, bestSum, left, right = 0;
    DP[0] = 0;
    for (i = 1; i <= N; i++) {
        DP[i] = v[i] + DP[i-1];
    }

    minim = DP[0];
    left = 0;
    bestSum = INT_MIN;

    for (i = 1; i <= N; i++) {
        best[i] = DP[i] - minim;
        if (minim > DP[i]) {
            minim = DP[i];
            left = i + 1;
        }
        if (bestSum < best[i]) {
            bestSum = best[i];
            right = i;
        }
    }
    fout << bestSum << " " << left << " " << right;
}

int main()
{
    int i;
    fin >> N;
    for (i = 1; i <= N; i++) {
        fin >> v[i];
    }
    solutie();
return 0;
}