Cod sursa(job #2079136)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 30 noiembrie 2017 17:01:45
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

void solve() {
    size_t total_size, seq_size;
    cin >> total_size >> seq_size;

    vector< int > values(total_size);
    for (auto& it : values)
        cin >> it;

    int64_t solution = 0;
    deque< size_t > min_deque;
    for (size_t i = 0; i < total_size; ++i) {
        while (!min_deque.empty() && values[i] <= values[min_deque.back()])
            min_deque.pop_back();
        min_deque.push_back(i);
        if (min_deque.front() + seq_size == i)
            min_deque.pop_front();

        if (i + 1 >= seq_size)
            solution += values[min_deque.front()];
    }

    cout << solution << endl;
}

int main() {
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);

    solve();

    return 0;
}