Cod sursa(job #503474)

Utilizator cosmyoPaunel Cosmin cosmyo Data 23 noiembrie 2010 02:23:14
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <cstdio>
const int N=5000005;
int dq[N],n,a[N],front,back,k;
long long rez;

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
		
		scanf("%d%d",&n,&k);
		int i;
			
			for(i=1;i<=n;++i)
				scanf("%d",&a[i]);

		front=1;
		back=0;

			for(i=1;i<=n;++i)
			{
				while(front<=back&&a[dq[back]]>=a[i])
					--back;

                dq[++back]=i;

				if(dq[front]==i-k)
					++front;

				if(i>=k)
					rez=(long long )rez+a[dq[front]];
			}

		printf("%lld\n",rez);
	
	return 0;
}