Pagini recente » Cod sursa (job #3129708) | Cod sursa (job #1801441) | Cod sursa (job #2836143) | Cod sursa (job #2850757) | Cod sursa (job #253184)
Cod sursa(job #253184)
#include<stdio.h>
#define N 5000002
int a[N];
struct coc{int v, p;} dq[N];
long long sol;
int main(){
int n, k, s, d, i;
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]);
for (i = 1; i < k; i++) dq[i].v = a[i], dq[i].p = i;
s = 1;d = k-1;
for ( ;dq[s].v >= dq[s+1].v && s <= d; s++);
for ( ;dq[d].v >= dq[d-1].v && s <= d; d--);
for (i = k; i <= n; i++){
if (i-dq[s].p >= k) s++;
for ( ;a[i] < dq[d].v && s<=d ;d--);
dq[++d].v = a[i]; dq[d].p=i;
sol+=dq[s].v;
}
printf("%lld\n",sol);
return 0;
}