Cod sursa(job #3144915)
Utilizator | Data | 11 august 2023 13:17:28 | |
---|---|---|---|
Problema | Deque | Scor | 0 |
Compilator | c-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include <stdio.h>
int s[1000002], dq[1000002];
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[i]]) back--;
dq[++back] = i;
if (dq[front] == i - k) front++;
if (i >= k) res += s[dq[front]];
}
fclose(f);
fclose(g);
return 0;
}