Pagini recente » Cod sursa (job #1284265) | Cod sursa (job #138800) | Cod sursa (job #793457) | Cod sursa (job #114984) | Cod sursa (job #2596592)
#include <stdio.h>
#define N 5000000
struct pos {
long long val,
pos;
} dq[N], constr;
long long v[N];
int main (void) {
FILE *fin=fopen("deque.in", "r"),
*fout=fopen("deque.out", "w");
long long n, k, i, x, front, back;
fscanf(fin, "%lld%lld%lld", &n, &k, &x);
constr.val=x, constr.pos=0;
dq[front=back=0]=constr;
for (i=1; i<k; i++) {
fscanf(fin, "%lld", &x);
while (front<=back && x<dq[back].val)
--back;
constr.val=x, constr.pos=i;
dq[++back]=constr;
}
long long s=dq[front].val;
for (; i<n; ++i) {
if (dq[front].pos+k<=i)
++front;
fscanf (fin, "%lld", &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;
}