Cod sursa(job #3031343)

Utilizator stefan.popescuPopescu Stefan stefan.popescu Data 19 martie 2023 16:15:38
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
 
using namespace std;

const int nmax = 5e6;

int n, k;

int a[nmax + 2];
long long sum;
deque <int> dq;

void solve(){
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
    for(int i = 1; i <= k; i++){
        while(!dq.empty() && a[dq.back()] >= a[i])
            dq.pop_back();
        dq.push_back(i);
    }
    sum += a[dq.front()];
    for(int i = k + 1; i <= n; i++){
        while(!dq.empty() && a[dq.back()] >= a[i])
            dq.pop_back();
        dq.push_back(i);
        if(dq.front() == i - k)
            dq.pop_front();
        sum += a[dq.front()];
    }
    cout << sum << "\n";
}

int main(){
    ios_base::sync_with_stdio(false), cin.tie(0), std::cout.tie(0);
 
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
 
    int q = 1;
    // cin >> q;
    while(q--){
        solve();
    }
    return 0;
}