Cod sursa(job #339306)

Utilizator razvi9Jurca Razvan razvi9 Data 9 august 2009 12:49:16
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<cstdio>

int d[5000001],st,dr,n,i,j,k,a[5000001];
long long S;

void push(int i)
{
	while(st<=dr)
		if(a[d[dr]]>=a[i])
			--dr;
		else
			break;
	d[++dr]=i;
}

long long pop(int k)
{
	while(d[st]<k)
		++st;
	return a[d[st]];
}

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%d %d",&n,&k);
	st=0,dr=-1;
	for(i=1;i<k;++i)
	{
		scanf("%d",&a[i]);
		push(i);
	}
	for(i=k,j=1;i<=n;++i,++j)
	{
		scanf("%d",&a[i]);
		push(i);
		S += pop(j);
	}
	printf("%lld",S);
	fclose(stdout);
	return 0;
}