Cod sursa(job #2609545)

Utilizator clau_rClaudia clau_r Data 2 mai 2020 21:00:55
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <limits>
#include <vector>
#include <queue>
 
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");

int main()
{
    int n, k, a;
    fin>>n>>k;
    vector<int> nums(n);
    for (int i = 0; i < n; ++i) {
        fin>>nums[i];
    }
    int ret = 0;
    deque<pair<int,int> > dq;
    for (int i = 0; i< n; ++i) {
        while (!dq.empty() && (dq.back().first <= i-k || nums[i] < dq.back().second)) {
            dq.pop_back();
        }
        dq.push_back(make_pair(i, nums[i]));
        while (!dq.empty() && dq.front().first <= i-k) {
            dq.pop_front();
        }
        if (i >= k-1) {
            int minim = dq.front().second;
            ret += minim;
        }
    }
    fout<<ret;
    return 0;
}