Cod sursa(job #2217707)

Utilizator TooHappyMarchitan Teodor TooHappy Data 1 iulie 2018 16:38:05
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

int main() {
    ios::sync_with_stdio(false); in.tie(0); out.tie(0);

    int n, k; in >> n >> k;

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

    deque< int > dqMins;
    long long ans = 0;
    for(int i = 1; i <= n; ++i) {
        while(!dqMins.empty() && v[i] <= v[dqMins.back()]) {
            dqMins.pop_back();
        }
        dqMins.push_back(i);

        if(dqMins.front() == i - k) {
            dqMins.pop_front();
        }

        if(i >= k) {
            ans += (1LL * v[dqMins.front()]);
        }
    }
    out << ans << "\n";

    return 0;
}