Cod sursa(job #3211173)

Utilizator susanEmily Susan susan Data 8 martie 2024 17:48:04
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#pragma GCC optimize("O3,unroll-loops")

#include <fstream>
#include <deque>
#include <vector>

using namespace std;
using ll = long long;

void add(deque<int> &Q, const vector<int> &v, const int &i) {
    while (!Q.empty() && v[i] < v[Q.back()])
        Q.pop_back();

    Q.push_back(i);
}

void rm(deque<int> &Q, const int &i) {
    while (!Q.empty() && Q.front() <= i)
        Q.pop_front();
}

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

    int n, k;
    f >> n >> k;
    vector<int> v(n);

    for (auto &it: v)
        f >> it;

    deque<int> Q;
    for (int i = 0; i < k; ++i)
        add(Q, v, i);

    ll sum = v[Q.front()];

    for (int i = k; i < n; ++i) {
        rm(Q, i - k);
        add(Q, v, i);
        sum += v[Q.front()];
    }

    g << sum << '\n';
}