Cod sursa(job #2622747)

Utilizator ihorvaldsTudor Croitoru ihorvalds Data 1 iunie 2020 19:08:34
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>

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

    unsigned int n, k;
    f >> n >> k;
    long long* a = new long long[n + 1] {0};
    long long* deque = new long long[n + 1] {0};
    unsigned int front = 0, back = 0;

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

    long long s = 0;
    for (unsigned int i = 1; i <= n; i++) {
        
        while (front <= back && a[i] <= a[deque[back]]) {
            back--;
        }

        back++;
        deque[back] = i;

        int pos = i - k;
        if (deque[front] == pos) {
            front++;
        }

        if (k <= i) {
            s += a[deque[front]];
        }
    }

    std::cout << s;

    delete[] a;
    delete[] deque;
}