Cod sursa(job #1498782)

Utilizator matericristea88Cristea-Enache Matei matericristea88 Data 9 octombrie 2015 09:56:00
Problema Deque Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>

using namespace std;

int v[5000010], d[5000010];
int i,k,st,dr,n;

void stanga(int i)
{
    if(i-d[st]==k)
        st++;
}

void dreapta(int i)
{
    while (st<=dr && v[i]<=v[d[dr]])
        dr--;
    d[++dr]=i;
}

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    long long s=0;
    dr=1;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        if (i > k)
            stanga(i);
        dreapta(i);
        if(i>=k)
            s=s+v[d[st]];
    }
    printf("%d",s);

    return 0;
}