Pagini recente » Cod sursa (job #2112310) | Cod sursa (job #1727137) | Cod sursa (job #904381) | Cod sursa (job #135697) | Cod sursa (job #3167197)
#include <iostream>
#include <deque>
using namespace std;
deque<pair<long long, int> > dq;
int main()
{
FILE *fin, *fout;
fin = fopen("deque.in", "r");
fout = fopen("deque.out", "w");
int n, k, i;
long long sum, x;
fscanf(fin, "%d %d", &n, &k);
sum = 0;
for (i = 0; i < n; i++) {
fscanf(fin, "%lld", &x);
if (!dq.empty() && dq.front().second <= i - k) {
dq.pop_front();
}
while (!dq.empty() && dq.back().first > x) {
dq.pop_back();
}
dq.push_back(make_pair(x, i));
if (i >= k - 1)
sum += dq.front().first;
}
fprintf(fout, "%lld\n", sum);
fclose(fin);
fclose(fout);
return 0;
}