Cod sursa(job #2817853)

Utilizator paul911234vaida paul paul911234 Data 14 decembrie 2021 12:59:47
Problema Secventa 2 Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int SIZE_N = 50001;

long long n, k, sp[SIZE_N];

int main() {
    fin >> n >> k;
    int ok = 1;
    for (int i = 1, x; i <= n; ++i) {
        fin >> x;
        sp[i] = sp[i - 1] + x;
        if (sp[i] < 0) {
            ok = 0;
        }
    }
    if (ok || n == k) {
        fout << 1 << ' ' << n << ' ' << sp[n];
        return 0;
    }
    long long begin = 1, end = k, valMin = 0, pos = 0, sum = sp[k];
    for (int i = 1; i <= n; ++i) {
        if (sp[i] - valMin > sum && i - pos >= k) {
            sum = sp[i] - valMin;
            begin = pos + 1;
            end = i;
        } else if (i >= k && sp[i] - sp[i - k - 1] > sum) {
            sum = sp[i] - sp[i - k - 1];
            begin = i - k;
            end = i;
        }
        if (sp[i] < valMin ) {
            valMin = sp[i], pos = i;
        }
    }
    fout << begin << ' ' << end << ' ' << sum;
}