Cod sursa(job #3216587)

Utilizator george-rotariuRotariu George george-rotariu Data 18 martie 2024 11:05:01
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <deque>

using namespace std;

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

struct numar {
    long long int val, poz;
};

long long int n, k, i, x, total_sum = 0;
deque<numar> dq;
numar aux;

int main () {
    fin >> n >> k;
    for (i = 0; i < k; i++) {
        fin >> x;
        aux.val = x;
        aux.poz = i;
        while (dq.size() > 0 && aux.val < dq.back().val) {
            dq.pop_back();
        }
        dq.push_back(aux);
    }

    for (; i < n; i++) {
        total_sum += dq.front().val;
        
        if (dq.front().poz + k == i)
            dq.pop_front();
           
        fin >> x;
        aux.val = x;
        aux.poz = i;
        while (dq.size() > 0 && aux.val < dq.back().val) {
            dq.pop_back();
        }
        dq.push_back(aux);
    }
    total_sum += dq.front().val;

    fout << total_sum << '\n';
    return 0;
}