Cod sursa(job #2391707)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 29 martie 2019 09:47:39
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#define M 1<<17
#define P 5000001
char r[M];
int q=M,v[P],d[P],p=1,u,i,n,k;
long long s;
inline char N()
{
    if(q==M)
        fread(r,1,M,stdin),q=0;
    return r[q++];
}
inline int A()
{
    int x=0,s=1;
    char c=N();
    while(!(c>='0'&&c<='9')&&c!='-')
        c=N();
    if(c=='-')
        c=N(),s=-1;
    while(c>='0'&&c<='9')
        x=x*10+c-'0',c=N();
    return x*s;
}
int main()
{
    freopen("deque.in","r",stdin),freopen("deque.out","w",stdout),n=A(),k=A();
    for(i=1;i<=n;i++)
        v[i]=A();
    for(i=1;i<k;i++)
    {
        while(p<=u&&v[i]<=v[d[u]])
            u--;
        d[++u]=i;
    }
    for(i=k;i<=n;i++)
    {
        while(p<=u&&v[i]<=v[d[u]])
            u--;
        d[++u]=i;
        if(d[p]==i-k)
            p++;
        s+=v[d[p]];
    }
    printf("%lld",s);
}