Cod sursa(job #1412386)

Utilizator sergiunascaSergiu Nasca sergiunasca Data 1 aprilie 2015 11:49:45
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <deque>
#define NMax 5000010
using namespace std;
long long suma = 0;
int A[NMax],k,n,x,start,finish;
std::deque<int> Dec;
int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&x);
        A[i] = x;
    }
    for(int i=1;i<=n;++i)
    {
        while(!Dec.empty()&&A[i]<=A[Dec[Dec.size()-1]])Dec.pop_back();
        Dec.push_back(i);
        if(Dec.front()==i-k)Dec.pop_front();
        if(i>=k)suma+=A[Dec.front()];
    }
    printf("%lld",suma);
    return 0;
}