Cod sursa(job #1324505)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 22 ianuarie 2015 14:39:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <iostream>
using namespace std;


const int kNMax = 5000010;
int n, k, v[kNMax];
int dq[kNMax], fdq = 1 , bdq;
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() {
    int i;
    for (i = 1; i <= n; ++i) {
        while (fdq <= bdq && v[i] <= v[dq[bdq]])
            bdq--;
        dq[++bdq] = i;
        if (dq[fdq] == i-k)
            fdq++;
        if (i >= k)
            sol += v[dq[fdq]];
    }
}

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

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