Cod sursa(job #1227169)

Utilizator vasica38Vasile Catana vasica38 Data 9 septembrie 2014 16:34:28
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
#define maxn 5000001;
using namespace std;

int n,j,k,m,u,a[5000010],d[5000010],i;
long long suma;


int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    for (i=1; i<=n; ++i) scanf("%d",&a[i]);
    int Front=1;
    int  Back=0;
    for (i=1; i<=n; ++i)
    {
        while (Front<=Back && a[i]<=a[d[Back]]) --Back;
        d[++Back]=i;
        if (d[Front]==i-k) ++Front;
        if (i>=k) suma+=a[d[Front]];
    }
    printf("%lld",suma);



return 0;
}