Cod sursa(job #2709741)

Utilizator EusebiudistrugatorulLionel Messi Eusebiudistrugatorul Data 21 februarie 2021 09:37:12
Problema Secventa 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
int sum[50001], pos[50001];

int main() {
    int n, k;
    fin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        int nr;
        fin >> nr;
        sum[i] = sum[i - 1] + nr;
    }
    int start = 0, finish = 0, pos_1 = 1, pos_2 = n, sum_max = sum[k];
    pos[start] = 0;
    for (int i = 1; i <= n; ++i) {
        if (sum_max < sum[i] - sum[pos[start]] && i - pos[start] >= k) {
            pos_1 = pos[start] + 1;
            pos_2 = i;
            sum_max = sum[i] - sum[pos[start]];
        }
        if (sum[i] < sum[pos[finish]]) {
            pos[++finish] = i;
        }
        if (start < finish && i - pos[start + 1] >= k - 1) {
            start++;
        }
    }
    fout << pos_1 << ' ' << pos_2 << ' ' << sum_max;
    return 0;
}