Cod sursa(job #2834778)

Utilizator nebunuweed666Ciucanu Stefan nebunuweed666 Data 17 ianuarie 2022 17:43:24
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <deque>
using namespace std;

#define f
#define lld long long int

#ifdef f
    ifstream cin("deque.in");
    ofstream cout("deque.out");
#else
    #include <iostream>
#endif // f

class intp {
public:
    int d, p;
};

//intp v[5000000];

int main() {
    int n, k;
    cin >> n >> k;
    intp x;
    cin >> x.d;
    x.p = 0;
    deque<intp> q;
    q.push_back(x);
    lld sum{};
    //cout << '\n';
    for (int i = 1; i < n; ++i) {
        cin >> x.d;
        x.p = i;
        if (i >= k) {
            sum += q.front().d;
            //cout << q.front().d << ' ';
        }
        while(!q.empty() && q.back().d >= x.d)
            q.pop_back();
        q.push_back(x);
        if (i - k >= q.front().p)
            q.pop_front();
        //cout << q.front().d << ' ';
    }
    cout << sum;
    return 0;
}