Cod sursa(job #2785972)

Utilizator rexlcdTenea Mihai rexlcd Data 19 octombrie 2021 21:49:36
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

deque < pair < int , int > > d;

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

    int n; f >> n;
    int k; f >> k;

    long long ans = 0;
    for(int i = 1; i <= k; i++)
    {
        int x; f >> x;
        
        if(d.empty())
            d.push_back({x, i});
        else
        {
            while(x < d.back().first)
                d.pop_back();
            d.push_back({x, i});
        }
    }

    ans += 1LL * d.front().first;
    for(int i = k + 1; i <= n; i++)
    {
        int x; f >> x;
        int l = i - k + 1;

        while(!d.empty() && d.front().second < l)
            d.pop_front();
        while(!d.empty() && x < d.back().first)
            d.pop_back();
        d.push_back({x, i});

        ans += 1LL * d.front().first;
    }

    g << ans << '\n';
    f.close();
    g.close();
    return 0;
}