Cod sursa(job #250542)

Utilizator marinMari n marin Data 31 ianuarie 2009 10:18:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>
#define DIM 5000001
int A[DIM];
int D[DIM];
int n,k,i,p,u;
long long s;

int main(){
  FILE *f = fopen("deque.in","r");

  fscanf(f,"%d %d",&n,&k);


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

  p=u=1;
  D[u]=1;
  for (i=2;i<=n;i++){
    while (p<=u && A[i]<=A[D[u]])
      u--;
    D[++u] = i;
    if (D[p]<i-k+1)
      p++;
    if (i>=k) {
      s+=A[D[p]];
    }
  }
  fclose(f);
  FILE *g = fopen("deque.out","w");
  fprintf(g,"%lld\n",s);
  fclose(g);
  return 0;
}