Pagini recente » Cod sursa (job #3163954) | Cod sursa (job #2881819) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #1472378)
#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);
}