Cod sursa(job #3196040)

Utilizator NuSuntRomanIspir Alexandru NuSuntRoman Data 22 ianuarie 2024 16:20:02
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

const int NMAX = 5e6 + 5;

int n, k, v[NMAX];
std :: deque < int > dq;
long long ans;

std :: ifstream fin("deque.in");
std :: ofstream fout("deque.out");

int main() {
    fin >> n >> k;

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

    for (int i = 1; i <= k; ++ i) {
        while (!dq.empty() && v[i] < dq.back()) {
            dq.pop_back();
        }

        dq.push_back(v[i]);
    }

    ans += dq.front();

    for (int i = k + 1; i <= n; ++ i) {
        while (!dq.empty() && v[i] < dq.back()) {
            dq.pop_back();
        }

        dq.push_back(v[i]);

        if (!dq.empty() && dq.front() == v[i - k]) {
            dq.pop_front();
        }

        ans += dq.front();
    }

    fout << ans << "\n";


    return 0;
}