Cod sursa(job #555198)

Utilizator nickyyLal Daniel Emanuel nickyy Data 15 martie 2011 12:34:40
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
using namespace std;
#define maxn 5000005
int a[maxn],deque[maxn];
long long sum;

int main(void)
{	int n,k,prim,ultim,i;
	FILE *fin=fopen("deque.in","r");
	FILE *fout=fopen("deque.out","w");
	fscanf(fin,"%d%d",&n,&k);
	for(i=1;i<=n;i++) fscanf(fin,"%d",(a+i));
	prim=1; ultim=0;
	for(i=1;i<=n;i++)
	{	while(prim<=ultim && a[i]<=a[deque[ultim]]) ultim--;
		deque[++ultim]=i;
		if(deque[prim]==i-k) prim++;
		if(i>=k) sum+=a[deque[prim]];
	}
	fprintf(fout,"%lld",sum);
	fclose(fin); fclose(fout);
	return 0;
}