Cod sursa(job #1451956)

Utilizator retrogradLucian Bicsi retrograd Data 19 iunie 2015 08:58:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
typedef int var;

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

var V[5000002];

auto cmp = [](var a, var b) { return V[a] > V[b]; };
priority_queue< var, vector<var>, decltype(cmp) > Heap(cmp);

#define DIM 100000
char buff[DIM];
var poz;
void Read(var &a) {
    #define adv() if(++poz == DIM) fin.read(buff, DIM), poz=0;
    while(!isdigit(buff[poz]) && buff[poz] != '-')
        adv();

    bool sgn = 0;
    if(buff[poz] =='-') {
        sgn = 1;
        adv();
    }
    a = 0;
    while(isdigit(buff[poz])) {
        a = a * 10 + buff[poz] - '0';
        adv();
    }

    if(sgn) a = -a;
}


int main() {

    var n, k;
    Read(n); Read(k);
    for(var i=1; i<k; i++) {
        Read(V[i]);
        Heap.push(i);
    }

    int64_t sum = 0;
    for(var i=k; i<=n; i++) {
        Read(V[i]);
        Heap.push(i);
        sum += V[Heap.top()];
        while(Heap.top() <= i-k+1)
            Heap.pop();
    }
    fout<<sum;

    return 0;
}