Cod sursa(job #3257714)

Utilizator Alex283810Mocan Alexandru Valnetin Alex283810 Data 19 noiembrie 2024 08:35:56
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
std::ifstream fin("deque.in");
std::ofstream fout("deque.out");
std::deque<long long>dqmin;
std::vector<long long>v;
int main()
{
    long long s=0,k,n;
    
    fin>>n>>k;
    v.resize(n+1);
    for(long i=1;i<=n;i++)fin>>v[i];
    
    for(long i=1;i<=n;i++)
    {
        if(!dqmin.empty()&&dqmin.front()<=i-k)
        {
            //fout<<dqmin.front()<<' ';
            dqmin.pop_front();
        }
        //fout<<'\n';
        while(!dqmin.empty()&&v[dqmin.back()]>=v[i]){// scoatem toate elemente mai mari decat v[i]
            //fout<<dqmax.back()<<' ';
            dqmin.pop_back();
        }
        //fout<<'\n';
        dqmin.push_back(i);
        if(i>=k)//daca au trecut de primele k elemente
        {
            s+=v[dqmin.front()];
        }
    }
    fout<<s;
    return 0;
}