Cod sursa(job #3173084)

Utilizator cosmin_mihaiDumitru Cosmin cosmin_mihai Data 21 noiembrie 2023 20:40:29
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include<vector>
#include <deque>
#include <iostream>
using namespace std;

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

vector<long long> window;
deque<long long> dq;

int main() {
    long long n, k;
    long long rez = 0, x;
    fin >> n >> k;

    window.resize(n+2);

    for (long long i = 0; i < n; i++){
        fin >> window[i];
        ///elimin din stanga daca primul nu mai face parte din secv. ultimilor k
        if (!dq.empty() && dq.front() == i - k){
            dq.pop_front();
        }
        ///elimin din dreapta elementele care sigur nu vor mai fi minime
        while (!dq.empty() && window[i] <= window[dq.back()]){
            dq.pop_back();
        }
        dq.push_back(i);
        if (i >= k - 1)
        {
            rez += window[dq.front()];
        }
    }

    fout << rez;

    return 0;
}