Cod sursa(job #3173622)
Utilizator | Data | 23 noiembrie 2023 13:33:39 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <stdio.h>
#define NMAX 5000005
int n, k, v[NMAX], d[NMAX];
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i) {
scanf("%d", &v[i]);
}
long long sum = 0;
int f = 1, b = 0;
for (int i = 1; i <= n; ++i) {
while (f <= b && v[i] <= v[d[b]]) b--;
d[++b] = i;
if (d[f] == i - k) ++f;
if (i >= k) sum += v[d[f]];
}
printf("%lld", sum);
fclose(stdin);
fclose(stdout);
return 0;
}