Cod sursa(job #3211178)

Utilizator susanEmily Susan susan Data 8 martie 2024 17:57:15
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 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);

    deque<int> Q;

    for (int i = 0; i < k; ++i) {
        f >> v[i];
        add(Q, v, i);
    }

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

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

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