Cod sursa(job #302874)

Utilizator rethosPaicu Alexandru rethos Data 9 aprilie 2009 13:00:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#define NM 5000001
int dq[NM];
int t[NM];
int k,st,dr,n;
long long r;
inline void popback()
{dr--;
}
inline void popfront()
{st++;
}
inline void push(int x,int i)
{dq[++dr]=x;
 t[dr]=i;
}
int main()
{freopen("deque.in","r",stdin);
 freopen("deque.out","w",stdout);
 scanf("%d %d",&n,&k);
 int x,i;
 st=1;
 dr=0;
 for (i=1;i<=n;i++) 
	 {scanf("%d",&x);
	  while (x<dq[dr]&&st<=dr)
		  {popback();
		  }
	  push(x,i);
	  if (t[dr]-t[st]+1>k) popfront();
	  if (i>=k) r+=dq[st];
	 }
 printf("%lld",r);
 return 0;
}