Cod sursa(job #2321550)

Utilizator CammieCamelia Lazar Cammie Data 16 ianuarie 2019 11:22:30
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 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();

            if (!Q.empty())

            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;

}