Cod sursa(job #561634)

Utilizator acelasi7Tudor Maxim acelasi7 Data 20 martie 2011 22:04:25
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#include<fstream>
#include<limits.h>
using namespace std;
#define nrn 50001
#define minf INT_MIN

int deq[500002];

int main()
{
    int v[500002],rt,lf,n,k,i;
    long long s=0;
    ifstream in("deque.in");
    ofstream out("deque.out");

    //freopen("deque.in","r",stdin);
    //freopen("deque.out","w",stdout);

    //scanf("%d%d",&n,&k);
    in>>n>>k;
    rt=0;
    lf=1;
    v[0]=minf;
    for(i=1;i<=n;++i)
    {
        //scanf("%d",&v[i]);
        in>>v[i];
        while(lf<=rt&&v[deq[rt]]>v[i])
            --rt;
        deq[++rt]=i;
        if(deq[lf]<=i-k)
            ++lf;
        if(i>=k)
            s+=v[deq[lf]];
    }
    //printf("%lld\n",s);
    out<<s<<'\n';
    return 0;
}