Cod sursa(job #1376649)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 5 martie 2015 18:11:09
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

const int kNMax = 5000010;
int n, k, v[kNMax];
int deq[kNMax], front_dq = 1, back_dq;
long long sol;

void Citire() {
    ifstream in("deque.in");
    in >> n >> k;
    for (int i = 1; i <= n; ++i)
        in >> v[i];
    in.close();
}

void Solve() {
    for (int i = 0; i <= n; ++i) {
        while (front_dq <= back_dq && v[i] <= v[deq[back_dq]])
            --back_dq;
        deq[++back_dq] = i;
        if (deq[front_dq] == i - k)
            ++front_dq;
        if (i >= k)
            sol += v[deq[front_dq]];
    }
}

void Afisare() {
    ofstream out("deque.out");
    out << sol << '\n';
    out.close();
}

int main() {
    Citire();
    Solve();
    Afisare();
    return 0;
}