Cod sursa(job #2320937)

Utilizator CammieCamelia Lazar Cammie Data 15 ianuarie 2019 13:56:25
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <deque>

using namespace std;

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

struct two{
    int val, poz;
};

deque <two> Q;

inline void Read(int &n, int &k, long long &sol) {
    fin >> n >> k;
    sol = 0;
    int x; two z;
    fin >> x; Q.push_back({x, 1});

    for (int i = 2; i <= n; i++) {
        fin >> x;
        z = Q.front();
        if (i - z.poz + 1 > k) {
            Q.pop_front();
        }
        z = Q.back();

        while (z.val > x && !Q.empty()) {
            Q.pop_back();
            z = Q.back();
        }
        Q.push_back({x, i});
        z = Q.front();
        if (i >= k)
            sol += z.val;
    }
}

int main () {
    int n, k; long long sol = 0;

    Read(n, k, sol);

    fout << sol << "\n";

    fin.close(); fout.close(); return 0;
}