Cod sursa(job #1621740)

Utilizator razvandRazvan Dumitru razvand Data 29 februarie 2016 21:14:41
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

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

deque<long long> deq;
long long 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;
}