Cod sursa(job #2494591)

Utilizator alexradu04Radu Alexandru alexradu04 Data 18 noiembrie 2019 09:56:31
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
struct Gigel
{
    int val;
    int pos;
};
int v[5000005];
deque<Gigel> dek;
int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    int n,k;
    long long sum=0;
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&v[i]);
    }
    for(int i=1;i<=n;++i)
    {

        while(!dek.empty()&&v[i]<dek.front().val)
        {
            dek.pop_front();
        }
        dek.push_front({v[i],i});
        if(dek.back().pos<=i-k)
            dek.pop_back();
        if(i>=k)
        {
            sum+=dek.back().val;
        }
    }
    printf("%lld\n",sum);
    return 0;
}