Cod sursa(job #1621745)

Utilizator razvandRazvan Dumitru razvand Data 29 februarie 2016 21:15:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

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

deque<int> deq;
int v[5000003];
int n,k;

void ins(int ind) {
    while(!deq.empty() && v[ind] <= v[deq.back()])
        deq.pop_back();
    deq.push_back(ind);
}

void rem(int ind) {
    while(!deq.empty() && deq.front() <= ind-k)
        deq.pop_front();
}

int main() {
    long long sum = 0;
    in >> n >> k;

    for(int i = 1; i <= n; i++) {

        in >> v[i];
        ins(i);

        if(i >= k) {

            rem(i);
            sum += v[deq.front()];

        }

    }

    out << sum;

    return 0;
}