Cod sursa(job #459950)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 31 mai 2010 18:16:40
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include<cstdio>
FILE*f=fopen("deque.in","r");
FILE*g=fopen("deque.out","w");
int back, front,n,i,k,v[5000010],deque[5000010];
long long s;
int main () {
	fscanf(f,"%d%d",&n,&k);
	front = 1; back = 0;
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&v[i]);
	for(i=1;i<=n;i++){
		while(front<=back&&v[i]<=v[deque[back]])
			back --;
		deque[++back] = i;
		if(deque[front]==i-k)
			front++;
		if(i>=k)
			s+=v[deque[front]];
	}
	fprintf(g,"%lld",s);
	fclose(f);
	fclose(g);
	return 0;
}