Pagini recente » Cod sursa (job #1004741) | Cod sursa (job #2703516) | Diferente pentru implica-te/arhiva-educationala intre reviziile 88 si 87 | Cod sursa (job #2300916) | Cod sursa (job #542046)
Cod sursa(job #542046)
#include<stdio.h>
int A[5000001], i, head, tail, k, n, a,deque[5000001];
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[i]);
head=1 ; tail=0;
for(i=1;i<=n;i++){
while(head<=tail && A[i]<=A[deque[tail]])
tail--;
deque[++tail ]=i;
if (deque[head]==i-k)head++;
if (i>=k) s+=A[deque[head]];
}
printf ("%lld\n",s);
return 0;
}