Pagini recente » summer_camp_2 | Cod sursa (job #2586912) | Cod sursa (job #30992) | Cod sursa (job #1178853) | Cod sursa (job #1279568)
#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) {
if (!minsDeque.empty())
while (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;
}