Cod sursa(job #3317204)

Utilizator risxdrzBanica Albert risxdrz Data 22 octombrie 2025 18:20:22
Problema Secventa 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
using namespace std;

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

    int N, K;
    fin >> N >> K;
    vector<long long> A(N + 1), P(N + 1, 0);

    for (int i = 1; i <= N; i++) {
        fin >> A[i];
        P[i] = P[i - 1] + A[i];
    }

    long long max_sum = LLONG_MIN;
    long long P_min = P[0];
    int index_min = 0;
    int best_start = 1, best_end = K;

    for (int j = K; j <= N; j++) {
        // pentru suma de lungime cel puțin K
        long long sum = P[j] - P_min;
        if (sum > max_sum) {
            max_sum = sum;
            best_start = index_min + 1;
            best_end = j;
        }

        // actualizăm minimul pentru prefixurile până la j - K + 1
        if (P[j - K + 1] < P_min) {
            P_min = P[j - K + 1];
            index_min = j - K + 1;
        }
    }

    fout << best_start << " " << best_end << " " << max_sum << "\n";
    return 0;
}