Cod sursa(job #3303748)

Utilizator TudorAndreiHhHerta Tudor TudorAndreiHh Data 17 iulie 2025 16:07:13
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, x, j, k;
    long long s = 0;
    cin >> n >> k;
    deque<pair<int, int>>dq(n+1);
    vector<int>v(n+1);
    for(int i = 1; i<= n; i++)
    {
        int j = i-k+1;
        cin >> v[i];
        while(!dq.empty() and v[i] < dq.back().first)
        {
            dq.pop_back();
        }
        dq.push_back({v[i], i});
        if(dq.front().second < j)dq.pop_front();
        if(i >= k)s+=dq.front().first;
    }
    cout << s;
    return 0;
}

/*introducem elementele in deque pe masura ce le citim din vector. 
Daca gasim unul mai mic decat ultimul introdus, le stergem pe toate pana pana cand acesta devine mai mare decat toate elementele deja existente in deque.
Apelam pentru fiecare element nou citit primul element din deque, fiind minimul, iar daca ajungem intr-o noua subsecventa de lungime k, stergem primul element din deque*/