Cod sursa(job #2928814)

Utilizator AleXutzZuDavid Alex Robert AleXutzZu Data 23 octombrie 2022 22:11:58
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>

int main() {
    std::ifstream input("deque.in");
    std::ofstream output("deque.out");

    int n, k;
    std::vector<int> a;

    input >> n >> k;
    long long ans = 0;

    for (int i = 1; i <= n; ++i) {
        int x;
        input >> x;
        a.push_back(x);
    }

    std::deque<int> deque;

    for (int i = 1; i <= n; ++i) {
        while (!deque.empty() && a[i - 1] <= a[deque.back() - 1]) deque.pop_back();

        deque.push_back(i);

        if (deque.front() == i - k) deque.pop_front();

        if (i >= k) ans += a[deque.front() - 1];
    }
    output << ans;
    return 0;
}