Cod sursa(job #2347193)

Utilizator emadinuDinu Ema emadinu Data 18 februarie 2019 16:32:25
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<cstdio>
#include<deque>
using namespace std;
deque <int> val;
deque <int> poz;
int v[5000001];
int main()
{
    long long s;
    int i,k,n,nr;
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    s=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        if(i<=k)
        {

            while(!val.empty()&&v[i]<val.back())
            {
                val.pop_back();
                poz.pop_back();
            }

            val.push_back(v[i]);
            nr=val.back();
            poz.push_back(i);
            nr=poz.back();
        }
    }
    s+=val.front();
    for(i=k+1;i<=n;i++)
    {
        while(!val.empty()&&val.back()>v[i])
        {
            poz.pop_back();
            val.pop_back();
        }
        val.push_back(v[i]);
        poz.push_back(i);
        while(!poz.empty()&&poz.back()-poz.front()+1>k)
        {
            poz.pop_front();
            val.pop_front();
        }


        s+=val.front();
    }
    printf("%lld",s);
    return 0;
}