Cod sursa(job #3193925)

Utilizator ducnthbducnthb ducnthb Data 16 ianuarie 2024 03:19:51
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include<bits/stdc++.h>
#define lli long long
#define vli vector<lli>
using namespace std;

lli sol(vli arr, int n, int k){
    vli res;
    deque<lli> dq;
    int i = 0;
    for(i  = 0; i < k ; i++){
        while(!dq.empty() && arr[i] <= arr[dq.back()])
            dq.pop_back();
        dq.push_back(i);
    }
    for(; i < n; i++){
        res.push_back(arr[dq.front()]);
        while(!dq.empty() && (dq.front() <= i-k))
            dq.pop_front();
        while(!dq.empty() && (arr[i] <= arr[dq.back()]))
            dq.pop_back();
        dq.push_back(i);
    }
    res.push_back(arr[dq.front()]);
    dq.pop_front();
    return accumulate(res.begin(), res.end(), 0);
}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cin.tie(0);
    ifstream cin ("deque.in");
    ofstream cout("deque.out");
    int t=1;
    //cin >> t;
    while(t--){
        lli n, k;
        cin >> n >> k;
        vli a(n);
        for(int i = 0; i < n; i++) cin >> a[i];
        cout << sol(a, n, k)<<endl;
    }
    return 0;
}