Cod sursa(job #929783)

Utilizator RynaquiAxinte Silviu Rynaqui Data 27 martie 2013 11:35:36
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
#include<utility>
#include<deque>
using namespace std;
deque<pair<int,int> > q;
int n,k,i,x;
long long sol;
int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<k;i++)
    {
        scanf("%d",&x);
        while(!q.size()&&x>=q.back().first)q.pop_back();
        q.push_back(make_pair(x,i));
    }
    for(i=k;i<=n;i++)
    {
        scanf("%d",&x);
        while(!q.size()&&x>=q.back().first)q.pop_back();
        q.push_back(make_pair(x,i));
        if(i-k==q.front().second)q.pop_front();\
        sol+=q.front().first;
    }
    printf("%lld",sol);
    return 0;
}