Cod sursa(job #3338245)

Utilizator stefan_anastasiuAnastasiu Stefan stefan_anastasiu Data 1 februarie 2026 20:43:21
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("deque.in");
ofstream g("deque.out");
int n,k,a[5000005],dq[5000005],s,st,dr,i;
long long rez;

int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)f>>a[i];

    st=1, dr=0;///in deque retin doar indicii

    for(i=1;i<=n;i++){
        while(st<=dr && a[i]<=a[dq[dr]])dr--;///elimin ultimul element din deque cat timp el nu este minimul pe secventa
        dq[++dr]=i;

        if(dq[st]==i-k)st++;///daca elementul minim(varful) coincide cu cel de pe pozitia i-k, il elimin pt ca nu mai conteaza pt urmatorii pasi >=i (practic daca nu as elimina as face secv prea lunga)
        if(i>=k)rez+=a[dq[st]];///minimul se afla mereu in varful deque ului
    }
    g<<rez;
    return 0;
}