Cod sursa(job #2030000)

Utilizator eragon0502Dumitrescu Dragos eragon0502 Data 30 septembrie 2017 20:18:06
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>

using namespace std;

int dq[5000005];
int v[5000005];

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