Cod sursa(job #1058631)

Utilizator enedumitruene dumitru enedumitru Data 15 decembrie 2013 18:35:54
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include<cstdio>
#define nmax 5000010
using namespace std;
int n,k,st,dr,i,a[nmax],D[nmax];
long long Sum;
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]);
    st=1; dr=0;
    for(i=1;i<=n;++i)
    {   while(st<=dr && a[i]<=a[D[dr]]) dr--;     
        D[++dr]=i;
        if(D[st]==i-k) st++;
        if(k<=i) Sum+=a[D[st]];     
    }
    printf("%lld\n",Sum); return 0;
}