Pagini recente » Cod sursa (job #2599568) | Cod sursa (job #2255791) | Cod sursa (job #2080348) | Cod sursa (job #1473092) | Cod sursa (job #1279573)
#include <cstdio>
#include <deque>
using namespace std;
#define NMAX 5000005
FILE *fin, *fout;
int A[NMAX];
long long sum;
deque <int> minsDeque;
int main() {
fin = fopen ("deque.in", "r"); fout = fopen ("deque.out", "w");
int i, n, k;
fscanf (fin, "%d%d", &n, &k);
for (i=1; i<=n; ++i) fscanf (fin, "%d", &A[i]);
for (i=1; i<=n; ++i) {
while (!minsDeque.empty() && A[i] < A[minsDeque.back()]) minsDeque.pop_back();
minsDeque.push_back(i);
if (i>=k) {
if (minsDeque.front() == i-k) minsDeque.pop_front();
sum += A[minsDeque.front()];
}
}
fprintf (fout, "%lld\n", sum);
fclose(fin); fclose(fout);
return 0;
}