Cod sursa(job #258359)

Utilizator MirageRobert Sandu Mirage Data 15 februarie 2009 09:16:25
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<stdio.h>
#define N 5000010
int deque[N], v[N];
long long start, end, act, suma;
int main () {
	FILE *in=fopen("deque.in","r");
	FILE *out=fopen("deque.out","w");
	int n,k;
	fscanf(in,"%d%d",&n,&k);
	for(int i=1;i<=n;++i)
		fscanf(in,"%d",&v[i]);
	start=1;
	end=0;
	for(int i=1;i<=n;++i){
		while(start <= end && v[i] <= v[deque[end]])
			--end;
		deque[++end]=i;
		if(deque[start] == i-k)
			++start;
		if(i >= k)
			suma += v[deque[start]];
	}
	fprintf(out,"%lld\n",suma);
	return 0;
}