Cod sursa(job #514692)

Utilizator cat_red20Vasile Ioana cat_red20 Data 19 decembrie 2010 13:41:19
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include<stdio.h>
FILE *fin,*fout;
int i,p,u,v[5000001],n,k,d[5000001];
long long s;
int main(){
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
fscanf(fin,"%d %d",&n,&k);
p=u=1;
for(i=1;i<=n;i++){
	fscanf(fin,"%d",&v[i]);	
}
d[1]=1;
for(i=2;i<=n;i++){
	while(p<=u && v[i]<=v[d[u]]){
		u--;
	}
	u++;
	d[u]=i;
	while(p<=u && i-d[p]+1>k){
		p++;
	}
	if(i>=k)
		s+=v[d[p]];
}
fprintf(fout,"%lld",s);
return 0;}