Cod sursa(job #3137815)

Utilizator not_anduAndu Scheusan not_andu Data 15 iunie 2023 08:45:32
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

// ! Shortcuts si constante
#define INFILE "deque.in"
#define OUTFILE "deque.out"
#define ll long long
const unsigned long VMAX = 5e6;

ifstream fin(INFILE);
ofstream fout (OUTFILE);

// ! Declararea variabilelor
int n, k, v[VMAX + 1];
deque<int> dq;
ll ans;

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

    for(int i = 1; i <= n; i++){
        fin >> v[i];
    }
        

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

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

    fout << ans;

    return 0;
}