Cod sursa(job #2056536)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 4 noiembrie 2017 12:14:34
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <deque>
using namespace std;
deque<pair <int,int> >d;
int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    int n,k,i,x;
    long long s=0;
    scanf("%d%d",&n,&k);
    scanf("%d",&x);
    d.push_back(make_pair(x,1));
    for(i=2;i<=k;i++)
    {
        scanf("%d",&x);
        while(!d.empty() && d.back().first>=x)
            d.pop_back();
        d.push_back(make_pair(x,i));
    }
    for(i=k+1;i<=n;i++)
    {
        scanf("%d",&x);
        s+=d.front().first;
        if(d.front().second==i-k)
            d.pop_front();
        while(!d.empty() && d.back().first>=x)
            d.pop_back();
        d.push_back(make_pair(x,i));
    }
    s+=d.front().first;
    printf("%lld",s);
    return 0;
}