Cod sursa(job #250941)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 1 februarie 2009 13:33:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
FILE*fin=fopen("deque.in","r");
FILE*fout=fopen("deque.out","w");
#define nmax 5000001
int a[nmax],deque[nmax],ind[nmax],k,n;
int main()
{
  int i,st,dr;
  long long ans=0;
  fscanf(fin,"%d%d",&n,&k);
  for(i=1;i<=n;i++)
    fscanf(fin,"%d",&a[i]);
  st=1;dr=0;
  for(i=1;i<=n;i++)
  {
    while(a[i]<deque[dr]&&dr>=st) dr--;
    dr++;
    deque[dr]=a[i];
    ind[dr]=i;
    if(ind[st]<=i-k) st++;
    if(i>=k) ans+=deque[st];
  }
  fprintf(fout,"%lld",ans);
  fclose(fin);
  fclose(fout);
  return 0;
}