Cod sursa(job #3209465)

Utilizator Sabin1133Padurariu Sabin Sabin1133 Data 2 martie 2024 15:16:37
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

#define NMAX 6000000

int dp[NMAX + 1];

int main()
{
    int n, start = 0, end = 0, sum = 0, len = INT32_MAX;

    std::ifstream fin("ssm.in");

    dp[0] = 0;
    for (int i = 1; i <= n; ++i) {
        fin >> dp[i];
        dp[i] += dp[i - 1];
    }

    fin.close();

    for (int l, r, i = 1; i < n; ++i) {
        l = r = i;

        while (dp[r + 1] > dp[r])
            ++r;

        if ((r > l)
            && ((dp[r] - dp[l - 1] > sum) || ((dp[r] - dp[l - 1] == sum) && (r - l + 1 < len)))) {
            sum = dp[r] - dp[l - 1];
            len = r - l + 1;
            start = l;
            end = r;
        }

        i = r;
    }

    std::ofstream fout("ssm.out");

    fout << sum << start + 1 << end + 1;

    fout.close();
}