Pagini recente » Cod sursa (job #2704265) | Cod sursa (job #73665) | Cod sursa (job #27719) | Cod sursa (job #2984157) | Cod sursa (job #338970)
Cod sursa(job #338970)
#include <stdio.h>
int a[5000000], deque[5000000];
int front, back,i,n,k;
long long suma;
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]);
suma=0;
front=1; back=0;
for (i=1; i<k; i++){
for (; front<=back && a[i]<=a[deque[back]]; back--);
back++;
deque[back]=i;
if (deque[front]+k==i)
front++;
}
for (i=k; i<=n; i++){
for (; front<=back && a[i]<=a[deque[back]]; back--);
back++;
deque[back]=i;
if (deque[front]+k == i)
front++;
suma+=a[deque[front]];
}
printf("%lld\n",suma);
fclose(stdin); fclose(stdout);
return 0;
}