Cod sursa(job #2572355)

Utilizator IulianOleniucIulian Oleniuc IulianOleniuc Data 5 martie 2020 12:35:28
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda OJI 2020 Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

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

class Deque {
  private:
    int k;
    deque<pair<int, int>> dq;

  public:
    Deque(int k) :
        k(k) { }

    void insert(int x) {
        static int cnt = 0;
        while (!dq.empty() && dq.back().second >= x)
            dq.pop_back();
        if (!dq.empty() && dq.front().first == ++cnt - k)
            dq.pop_front();
        dq.emplace_back(cnt, x);
    }

    int query() {
        return dq.front().second;
    }
};

int main() {
    int n, k; fin >> n >> k;
    Deque dq(k);

    int64_t sol = 0;
    for (int i = 0; i < n; i++) {
        int x; fin >> x;
        dq.insert(x);
        if (i >= k - 1)
            sol += dq.query();
    }
    fout << sol << '\n';

    fout.close();
    return 0;
}