Pagini recente » Cod sursa (job #820215) | Cod sursa (job #2066222) | Cod sursa (job #2152934) | Cod sursa (job #2143616) | Cod sursa (job #2294630)
#include <bits/stdc++.h>
using namespace std;
FILE *fin = fopen ("deque.in", "r"), *fout = fopen ("deque.out", "w");
const int MAXN = 5e6;
int dq[MAXN + 1], a[MAXN + 1];
int main() {
int st, dr, i, n, k;
long long sol;
fscanf (fin, "%d%d", &n, &k);
for (i = 1; i <= n; i++) {
fscanf (fin, "%d", &a[i]);
}
st = 0;
dr = -1;
sol = 0;
for (i = 1; i <= n; i++) {
if (dq[st] && dq[st] <= i - k)
st++;
while (dr >= st && a[i] <= a[dq[dr]])
dr--;
dq[++dr] = i;
if (i >= k) {
sol = sol + a[dq[st]];
//fprintf (fout, "%d\n", a[dq[st]]);
}
}
fprintf (fout, "%lld\n", sol);
fclose (fin);
fclose (fout);
return 0;
}