Pagini recente » Borderou de evaluare (job #1708811) | Borderou de evaluare (job #1711307) | Cod sursa (job #984666) | Cod sursa (job #72712) | Cod sursa (job #1305617)
#include <stdio.h>
#define N_MAX 5000000
int v[N_MAX], pos[N_MAX], l, r;
int main()
{
FILE *fin, *fout;
fin = fopen("deque.in", "r");
fout = fopen("deque.out", "w");
int N, K;
fscanf(fin, "%d%d", &N, &K);
int i, read;
long long ans = 0;
for (i = 0; i < N; i++) {
int num;
fscanf(fin, "%d", &num);
if (r > l && pos[l % N_MAX] == i - K) { // Scoaterea elementelor expirate
l++;
}
while (r > l && num <= v[(r - 1) % N_MAX]) { // Inserarea noului element
r--;
}
v[r % N_MAX] = num;
pos[r % N_MAX] = i;
r++;
ans += (i >= K - 1 ? v[l % N_MAX] : 0);
}
fprintf(fout, "%lld\n", ans);
fclose(fin);
fclose(fout);
return 0;
}