Cod sursa(job #1472378)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 17 august 2015 03:08:48
Problema Deque Scor 85
Compilator c Status done
Runda Arhiva educationala Marime 0.51 kb
#include<stdio.h>
int a,n,k,i,b[5000001],q[5000001],p,u;
long long s;
int main() {
	freopen("deque.in","r",stdin),freopen("deque.out","w",stdout),scanf("%d%d",&n,&k);
	for(i=1;i<=n;i++) {
		scanf("%d",&a);
      	for(;u>p&&a<q[u-1];u--);
      	q[u++]=a,b[p]++,b[u-1]=1;
      	if(u-p>1)
            b[p+1]++;
      	if(((u-p==1&&p==i-k)||(p<i-k&&u-p<k)||(i==k&&b[p]>1))&&b[p]<k)
            s+=q[p];
      	else if(u-p==k||b[p]==k||p==i-k||(i==k&&b[p]==1))
            s+=q[p++];
	}
	printf("%lld",s);
}