Cod sursa(job #253000)

Utilizator katakunaCazacu Alexandru katakuna Data 5 februarie 2009 11:59:26
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<stdio.h>
#define NMAX 5000010

int n,k,i,p,u,v[NMAX],deque[NMAX];
long long sol;

int main(){

  FILE *f=fopen("deque.in","r");
  FILE *g=fopen("deque.out","w");

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

  p=1; u=1;
  deque[1] = v[i];

  for(i=1; i<=n; i++){
     while(deque[p] <= i-k && p<=u )
        p++;
     while(v[deque[u]] >= v[i] && p<=u)
        u--;

     deque[++u]=i;
     if(i>=k)
        sol+=(long long)v[deque[p]];
  }

  fprintf(g,"%lld",sol);

  fclose(f);
  fclose(g);

  return 0;
}