Cod sursa(job #3144933)
Utilizator | Data | 11 august 2023 14:41:43 | |
---|---|---|---|
Problema | Deque | Scor | 25 |
Compilator | c-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.59 kb |
#include <stdio.h>
int s[5000010], dq[5000010];
int main(void) {
FILE* f = fopen("deque.in", "r");
FILE* g = fopen("deque.out", "w");
int n, k, front = 1, back = 0, res = 0;
fscanf(f, "%d %d", &n, &k);
for (int i = 1; i <= n; i++)
fscanf(f, "%d", &s[i]);
for (int i = 1; i <= n; i++) {
while (front <= back && s[i] <= s[dq[back]]) back--;
dq[++back] = i;
if (dq[front] == i - k) front++;
if (i >= k) res += s[dq[front]];
}
fprintf(g, "%d", res);
fclose(f);
fclose(g);
return 0;
}