Cod sursa(job #345269)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 2 septembrie 2009 13:50:05
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<stdio.h>
#define MAX 5000005

FILE *fin=fopen("deque.in","r"),
	*fout=fopen("deque.out","w");

int dq[MAX],A[MAX],N,K;
int S,min,li,lf;

int main()
{
	fscanf(fin,"%d %d",&N,&K);
	for(int i=1;i<=N;i++)
		fscanf(fin,"%d",&A[i]);
	A[0]=10000100;
	li=lf=0;
	for(int i=1;i<=K;i++)
	{
		while(A[dq[lf]]>=A[i] && li<=lf)
			--lf;
		dq[++lf]=i;
	}
	li=1;S+=A[dq[li]];
	for(int i=K+1;i<=N;i++)
	{
		if(i-dq[li]>=K)
			++li;
		while(A[dq[lf]]>=A[i] && li<=lf)
			--lf;
		dq[++lf]=i;
		S+=A[dq[li]];
	}
	fprintf(fout,"%d\n",S);
	return 0;
}