Cod sursa(job #3314809)

Utilizator proflaurianPanaete Adrian proflaurian Data 11 octombrie 2025 11:05:56
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
const int N = 5000001;
int n,k,a[N],q[N],B=1,E=0; /// a[] pentru valori
int64_t sol; /// se recomanda ca solutia sa fie pe 64 de biti
int main()
{
    f>>n>>k;
    for(int i=1;i<=n;i++)
        f>>a[i];
    /// initializarea cozii de indici pentru prima secventa

    for(int i=1;i<k;i++)
    {
        /// elimina orice valoare mai mare decat a[i] de la finalul cozii
        while(B<=E && a[q[E]]>=a[i])
            E--;
        /// adauga ultima valoare
        q[++E]=i;
    }

    for(int i=k;i<=n;i++)
    {
        /// elimina orice valoare mai mare decat a[i] de la finalul cozii
        while(B<=E && a[q[E]]>=a[i])
            E--;

        /// adauga ultima valoare
        q[++E]=i;

        /// daca primul element din coada nu mai fac parte din secventa curenta se elimina
        if(i-q[B]==k)
            B++;

        /// minimul secventei curente este primul din coada
        sol+=a[q[B]];
    }

    g<<sol<<'\n';

    return 0;
}