Cod sursa(job #3177877)

Utilizator luc3lexaAlexandrescu Luca luc3lexa Data 30 noiembrie 2023 13:40:50
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
deque<long int> dq;
long int v[5000010];
long int n,k,x;
int main()
{
    fin >> n >> k;

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

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

}