Cod sursa(job #1803331)

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

int n,k;
long long int s;
int 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()];
    }
    cout<<s;
}

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