Cod sursa(job #792777)

Utilizator Mitza444Vidrean Mihai Mitza444 Data 29 septembrie 2012 22:17:40
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<cstdio>
using namespace std;
long long deq[5000001],poz[5000001],n,k;
int main(){
	long long x,p,u,s=0,i;
	freopen("deque.in","r",stdin);
	scanf("%lld%lld",&n,&k);
	for(i=1,p=1,u=1;i<=n;i++){
		scanf("%lld",&x);
		if(u==1){
			poz[u]=i;
			deq[u++]=x;
		}
		else{
			while(deq[u-1]>=x && p<u)
				u--;
			poz[u]=i;
			deq[u++]=x;
		}
		if(i>=k)
			s+=deq[p];
		if(i-k+1>=poz[p])
			p++;
	}
	fclose(stdin);
	freopen("deque.out","w",stdout);
	printf("%lld\n",s);
	fclose(stdout);
	return 0;
}