Pagini recente » Cod sursa (job #39924) | Cod sursa (job #958307) | Cod sursa (job #2304517) | Cod sursa (job #3259626) | Cod sursa (job #2180712)
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5000000
struct dqe {
int x;
int i;
};
static struct dqe dq[SIZE];
static int read(int end)
{
int ch, x = 0, sgn = 1;
if ((ch = getchar_unlocked()) == '-') {
sgn = -1;
} else {
x = ch - '0';
}
while ((ch = getchar_unlocked()) != end) {
x = x * 10 + (ch - '0');
}
return sgn * x;
}
int main(void)
{
int n, k, x, i, t, h;
long long r;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
n = read(' ');
k = read('\n');
t = h = 0;
r = 0;
for (i = 0; i < n; i++) {
x = read('\n');
while (t - 1 >= h && dq[t-1].x >= x) {
t--;
}
dq[t].x = x;
dq[t].i = i;
t++;
if (i - k >= dq[h].i) {
h++;
}
if (i >= k - 1) {
r += dq[h].x;
}
}
printf("%lld\n", r);
return 0;
}