Cod sursa(job #3173086)

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

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

vector<int> window;
deque<int> dq;

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

    window.resize(n);

    for (int 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;
}