Cod sursa(job #2622842)

Utilizator ihorvaldsTudor Croitoru ihorvalds Data 1 iunie 2020 22:32:36
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
#include <vector>

long long a[5000010] = { 0 };
//int dq[5000010] = { 0 };

int main()
{
    std::ifstream f("deque.in");
    std::ofstream g("deque.out");

    int n, k;
    f >> n >> k;

    std::vector<int> dq;

    for (int i = 0; i < n; i++) {
        f >> a[i];
    }

    long long s = 0;

    for (int i = 0; i < n; i++) {
        while (!dq.empty() && a[dq.back()] >= a[i]) {
            dq.pop_back();
        }
        dq.push_back(i);

        if (dq.front() == i - k) {
            dq.erase(dq.begin());
        }


        if (i + 1 >= k) {
            s += a[dq.front()];
        }
    }

    g << s;
}