Cod sursa(job #3030389)

Utilizator rastervcrastervc rastervc Data 17 martie 2023 17:27:22
Problema Secventa 2 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>

using namespace std;

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

constexpr int LIM = 50005;
int N, K, arr[LIM], sum[LIM], S;
int ans, ans_l, ans_r;

int main() {
    fin >> N >> K;
    for (int i = 1; i <= N; ++i) {
        fin >> arr[i];
        sum[i] = sum[i - 1] + arr[i];
    }

    int l = 1;
    for (int i = 1; i <= N; ++i) {
        S += arr[i];
        if (i - l + 1 >= K) {
            if (ans < S) {
                ans = S;
                ans_l = l;
                ans_r = i;
            }
            int min_sum = 0, pos = 0;
            for (int j = l; j <= i - K; ++j)
                if (sum[j] - sum[l - 1] < min_sum) {
                    min_sum = sum[j] - sum[l - 1];
                    pos = j;
                }
            if (min_sum < 0) {
                S -= min_sum;
                l = pos + 1;
            }
        }
    }

    fout << ans_l << ' ' << ans_r << ' ' << ans;

    fin.close();
    fout.close();
    return 0;
}