Cod sursa(job #3127264)

Utilizator willOcanaru Mihai will Data 7 mai 2023 14:01:53
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f("deque.in");
ofstream g("deque.out");

int main()
{
    vector<long long> numbers;

    long long no_of_elements, interval, x, sum = 0;
    f >> no_of_elements >> interval;

    for(long long i=0; i<no_of_elements; i++){
        f >> x;
        numbers.push_back(x);
    }

    vector<long long> minimums;

    for(long long i=0; i<interval; i++){
        while(!minimums.empty() && numbers[i] <= numbers[minimums.back()]){
            minimums.pop_back();
        }
        minimums.push_back(i);
    }

    sum += numbers[minimums.front()];

    for(long long i=interval; i<no_of_elements; i++){

        while(!minimums.empty() && numbers[i] <= numbers[minimums.back()]){
            minimums.pop_back();
        }

        minimums.push_back(i);

        if(minimums.front() <= i - interval){
            minimums.erase(minimums.begin());
        }

        sum += numbers[minimums.front()];
    }

    g << sum;   

    return 0;
}