Cod sursa(job #1803323)

Utilizator andreigasparoviciAndrei Gasparovici andreigasparovici Data 11 noiembrie 2016 11:52:44
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <cstdio>
#include <deque>
using namespace std;

int n,k,s,a[5000001];
deque<int>d;

void solve()
{
    scanf("%d %d",&n,&k);

    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);


    for(int i=1;i<k ;i++)
    {
        while(!d.empty() && a[d.back()]>=a[i])
            d.pop_back();
        d.push_back(i);
    }

    for(int i=k;i<=n;i++)
    {
        if(!d.empty() && d.front()<=i-k)
                d.pop_front();
        while(!d.empty() && a[d.back()]>=a[i])
                d.pop_back();
            d.push_back(i);
        s+=a[d.front()];
    }
    printf("%d",s);
}

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    solve();
    return 0;
}