Cod sursa(job #1075783)

Utilizator savulescustefanSavulescu Stefan savulescustefan Data 9 ianuarie 2014 16:09:28
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>

using namespace std;
int s,a[5000004],b[5000004],i,j,p,x,k,n,u;
int main()
{
    freopen ("deque.in","r",stdin);
    freopen ("deque.out","w",stdout);
    scanf ("%d %d", &n, &k);
    p=1;
    u=1;
    for (i=1;i<=n;i++)
    {
        scanf ("%d", &x);
        if (i>1)
        {
            if (a[p]<i-k+1)
                p++;
            for (j=u;j>=p;j--)
            {
                if (x<=b[j])
                    {
                    a[j]=0;
                    b[j]=0;
                    }
                else if (b[j]!=0)
                    {
                    a[j+1]=i;
                    b[j+1]=x;
                    u=j+1;
                    break;
                    }
            }
            if (j==p-1)
            {
                a[j+1]=i;
                b[j+1]=x;
                u=j+1;
            }
            if (i>=k)
                s+=b[p];
        }
        else
            {
            a[1]=i;
            b[i]=x;
            }
    }
    printf ("%d", s);
    return 0;
}