Pagini recente » Cod sursa (job #397277) | Cod sursa (job #701930) | Cod sursa (job #2885127) | Cod sursa (job #180158) | Cod sursa (job #2596594)
#include <stdio.h>
#define N 5000000
struct pos {
int val,
pos;
} dq[N], constr;
int v[N];
int main (void) {
FILE *fin=fopen("deque.in", "r"),
*fout=fopen("deque.out", "w");
int n, k, i, x, front, back;
fscanf(fin, "%d%d%d", &n, &k, &x);
constr.val=x, constr.pos=0;
dq[front=back=0]=constr;
for (i=1; i<k; i++) {
fscanf(fin, "%d", &x);
while (front<=back && x<dq[back].val)
--back;
constr.val=x, constr.pos=i;
dq[++back]=constr;
}
long long s=(long long)dq[front].val;
for (; i<n; ++i) {
if (dq[front].pos+k<=i)
++front;
fscanf (fin, "%d", &x);
while (front<=back && x<dq[back].val)
--back;
constr.val=x, constr.pos=i;
dq[++back]=constr;
s+=dq[front].val;
}
fprintf(fout, "%lld", s);
return 0;
}