Cod sursa(job #235821)

Utilizator katakunaCazacu Alexandru katakuna Data 25 decembrie 2008 22:50:44
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#define MAXN 5000010

int v[MAXN],d[MAXN],n,k,i,p,u;
long long rez;

int main(){

FILE *f=fopen("deque.in","r");
fscanf(f,"%d %d",&n,&k);

  for(i=1;i<=n;i++){
  fscanf(f,"%d",&v[i]);
  }
  
fclose(f);

p=1;
u=1;
d[1]=1;

  for(i=2;i<=n;i++){

     while(d[p] <= i- k )
     p++;


     while(v[i] < v[d[u]] && p<=u)
     u--;

     u++;
     d[u]=i;

     if(i>=k){
     rez+=(long long)v[d[p]];
     }
  }

FILE *g=fopen("deque.out","w");
fprintf(g,"%d",rez);
fclose(g);

return 0;
}