Cod sursa(job #1779360)

Utilizator iAnduAlexandru Banu iAndu Data 15 octombrie 2016 10:48:04
Problema Deque Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <deque>
#include <climits>
using namespace std;

int main() {
    int x, n, k, tick = 0, i, nMin = INT_MAX;
    long long sum = 0;
    deque<int> deq;

    ifstream in("deque.in");
    in >> n >> k;
    for (i = 1; i <= k; i++) {
        tick++;
        in >> x;
        while (!deq.empty() && x < deq.back()) {
            deq.pop_back();
            if (x < nMin)
                tick--;
        }
        deq.push_back(x);
        nMin = deq.front();
    }
    sum += deq.front();
    while (in >> x) {
        if (tick >= k) {
            deq.pop_front();
            tick = 1;
        }
        tick++;
        while (!deq.empty() && x < deq.back()) {
            deq.pop_back();
            if (x < nMin) {
                tick--;
            }
        }
        deq.push_back(x);
        nMin = deq.front();
        sum += deq.front();
    }
    in.close();

    ofstream out("deque.out");
    out << sum << '\n';
    out.close();

    return 0;
}