Cod sursa(job #2352874)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 23 februarie 2019 18:36:20
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

#define MAXN 5000005
#define llg long long

int N, K;
int V[MAXN];

std::ifstream In("deque.in");
std::ofstream Out("deque.out");

std::deque <int> DQ;

void Citire() {
    In >> N >> K;
}

void Rezolvare() {
    llg Sum = 0;

    for (int i=1; i<=N; ++i) {
        In >> V[i];

        if (!DQ.empty() && DQ.back() + K <= i)
            DQ.pop_back();

        while (!DQ.empty() && V[DQ.front()] > V[i])
            DQ.pop_front();

        DQ.push_front(i);

        if (i>=K)
            Sum += 1LL * V[DQ.back()];
    }   Out << Sum << '\n';
}

int main()
{
    Citire();
    Rezolvare();

    return 0;
}