Cod sursa(job #237014)

Utilizator swift90Ionut Bogdanescu swift90 Data 28 decembrie 2008 21:36:40
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
struct ddd{
	int val,poz;
}deq[5000000];
char ss[15];
int main(){
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	int n,k,i,j,st,dr,x;
	long long sol=0;
	scanf("%d%d",&n,&k);
	st=dr=0;
	fgets(ss,10,stdin);
	for(i=1;i<=n;++i){
		x=0;
		fgets(ss,10,stdin);
		j=0;
		if(ss[0]=='-')
			++j;
		for(;'0'<=ss[j] && ss[j]<='9';++j)
			x=x*10+ss[j]-'0';
		if(ss[0]=='-')
			x*=(-1);
		if(deq[st].poz<=i-k)
			++st;
		while(deq[dr].val>x && dr>=st)
			--dr;
		deq[++dr].val=x;
		deq[dr].poz=i;
		if(i>=k)
			sol+=deq[st].val;
	}
	printf("%lld\n",sol);
	fclose(stdin);
	fclose(stdout);
	return 0;
}