Cod sursa(job #2795121)

Utilizator lolismekAlex Jerpelea lolismek Data 5 noiembrie 2021 23:40:25
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

const int N = 5000001;
int v[N];
deque <int> D;

int main()
{
    long long n, k, i, ultim, sum = 0, val;
    fin >> n >> k;
    for(i = 1; i <= n; i++) fin >> v[i];

    for(i = 1; i <= k; i++){
        while(!D.empty() && D.back() >= v[i])
            D.pop_back();
        D.push_back(v[i]);
    }
    sum += D.front();
    for(i = 2; i <= n - k + 1; i++){
        if(v[i - 1] == D.front())
            D.pop_front();
        ultim = i + k - 1;
        while(!D.empty() && D.back() >= v[ultim]){
            D.pop_back();
        }
        D.push_back(v[ultim]);
        sum += D.front();
        val = D.front();
    }
    fout << sum;
    return 0;
}