Cod sursa(job #2887574)

Utilizator neagamariaMaria Neaga-Budoiu neagamaria Data 9 aprilie 2022 20:21:29
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

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

deque<pair<long long, int>> q;
int n, k;
long long x;
long long sum;

int main()
{
    in>>n>>k;
    for (int i=0; i<n; i++)
    {
        in>>x;
        if(q.empty() || x>q.back().first)
            q.push_back(make_pair(x, i));//adaug elementele mari deasupra

        while(x<q.back().first && !q.empty())
            q.pop_back(); //elementele mici le scot pe cele mai mari decat ele din coada, apoi sunt adaugate in coada

        q.push_back(make_pair(x, i));


    while(i-q.front().second>=k && !q.empty())//elementele mici le scot din fata lor pe cele care sunt prea departate
        q.pop_front();

    if (i>=k-1)
        sum+=q.front().first; //minimul curent se afla in fata cozii
    }
    out<<sum;

return 0;
}