Cod sursa(job #1320359)

Utilizator retrogradLucian Bicsi retrograd Data 17 ianuarie 2015 21:52:19
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#include<deque>
#include<utility>

using namespace std;

typedef int64_t var;

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

struct Elem {
    int v, i;
    Elem(var a, var b) {
        v = a; i = b;
    }
};

deque <Elem> Q;

int main() {
    var n, k, i, x;
    fin>>n>>k;
    for(i=1; i<=k; i++) {
        fin>>x;
        while(!Q.empty() && x < Q.back().v) {
            Q.pop_back();
        }
        Q.push_back(Elem(x, i));
    }
    var sum = Q.front().v;
    for(; i<=n; i++) {
        if(Q.front().i == i-k)
            Q.pop_front();
        fin>>x;
        while(!Q.empty() && x < Q.back().v) {
            Q.pop_back();
        }
        Q.push_back(Elem(x, i));

        sum += Q.front().v;
    }

    fout<<sum;
    return 0;
}