Cod sursa(job #2974603)

Utilizator Luca_CristianZamfir Luca-Cristian Luca_Cristian Data 4 februarie 2023 11:30:48
Problema Deque Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <deque>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");
const int Ncoada = 1e6 * 5 + 5;
int deck[Ncoada], v[Ncoada];
int ans, st, dr = 1;

void pushb(int x)
{
    dr = (dr + 1) % Ncoada;
    deck[dr] = x;
}
void popb()
{
    dr = (dr - 1) % Ncoada;
}
void popfront()
{
    st = (st + 1) % Ncoada;
}

int main()
{
    int n, k;

    fin >> n >> k;
    for(int i = 1; i <= n; i++)
    {
        fin >> v[i];
        while(st <= dr && v[deck[dr]] >= v[i])
            popb();
        pushb(i);
        if(deck[st] == i - k)
            popfront();
        if(i >= k)
            ans += v[deck[st]];
    }
    fout << ans;


    return 0;
}