Cod sursa(job #3124456)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 28 aprilie 2023 19:51:57
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <algorithm>
#include <queue>
#define ll long long

using namespace std;

ifstream cin("deque.in");
ofstream cout("deque.out");

const int NMAX = 5e6;
int n, k;
ll a[NMAX + 1];
deque<ll> dq;
ll ans;

int main()
{
    cin >> n >> k;

    for(int i = 1; i <= n; i++) 
        cin >> a[i];

    for(int i = 1; i <= n; i++)
    {
        if(!dq.empty() && dq.back() < i - k + 1)
            dq.pop_back();
        
        while(!dq.empty() && a[dq.front()] > a[i])
            dq.pop_front();

        dq.push_front(i);

        if(i >= k)
            ans += a[dq.back()];
    }

    cout << ans;

    return 0;
}