Cod sursa(job #3126679)

Utilizator Maria_VerdesVerdes Maria-Ioana Maria_Verdes Data 6 mai 2023 20:47:31
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <deque>

using namespace std;

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

int main()
{
    deque <pair<int, int>> deq;
    int n, k, el, sum = 0;
    f >> n >> k;
    for(int i = 1; i <= n; i++)
    {
        f >> el;
        //vrem sa elimine din finalul deque-ului el mai mari ca el
        int j = deq.size() - 1;
        while(!deq.empty() && deq.at(j).first > el && j >= 0)
        {
            deq.pop_back();
            j--;
        }
        deq.push_back(make_pair(el,i));
        //pt fiecare segment care incepe de la k pana la final trebuie sa gasim un minim si sa-l adunam la secventa
        if(i >= k)
        {
            //dam pop la minimele care nu mai sunt in secventa
            while(deq[0].second < i - k + 1 && !deq.empty())
                deq.pop_front();
            //il luam pe cel care ramane primul in deq
            sum += deq[0].first;
        }
    }
    g << sum;
    return 0;
}