Cod sursa(job #235665)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 25 decembrie 2008 02:25:36
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<stdio.h>
#define N 5000010
long long sum,val,dq[N];
int n,k,i,ind[N],prim,ultim;
void readd();
int main()
{
	readd();
	printf("%lld",sum);
	return 0;
}
void readd()
{
	freopen("deque.in","rt",stdin);
	freopen("deque.out","wt",stdout);
	scanf("%d%d",&n,&k);
	if(k==1){for(i=1;i<=n;i++){scanf("%lld",&val);sum+=val;}return;}
	scanf("%lld",&dq[1]);prim=ultim=1;ind[1]=1;
	for(i=2;i<k;i++)
	{ scanf("%lld",&val);
	  while(ultim>=prim&&dq[ultim]>=val)ultim--;
	  ultim++;dq[ultim]=val;ind[ultim]=i;
	}
	for(i=k;i<=n;i++)
	{ scanf("%lld",&val);
	  while(ultim>=prim&&dq[ultim]>=val)ultim--;
	  ultim++;dq[ultim]=val;ind[ultim]=i;
	  if(ind[prim]+k==i)prim++;
	  sum+=dq[prim];
	}
}