Cod sursa(job #474169)

Utilizator vladcatrinaVlad Catrina vladcatrina Data 2 august 2010 17:45:16
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <stdio.h>
FILE*f = fopen("deque.in","r");
FILE*g = fopen("deque.out","w");

int n,k,i,front,back;
int a[5000010],d[5000010];
long long s;

int main() {

	fscanf(f,"%d %d",&n,&k);
	
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&a[i]);
	
	front=1, back=0;
	
	for(i=1;i<=n;i++){
		
		while(front<=back && a[i] <= a[d[back]])
			back--;
		
		d[++back]=i;
		
		if (d[front] == i-k)
			front++;
		
		if(i>=k)
			s+=a[d[front]];
		
	}
	
	fprintf(g,"%lld",s);
	
	fclose(f);
	fclose(g);
	return 0;
}