Pagini recente » Cod sursa (job #3268758) | Cod sursa (job #254270) | Borderou de evaluare (job #496502) | Cod sursa (job #533793) | Cod sursa (job #485676)
Cod sursa(job #485676)
#include <cstdio>
#include <cstdlib>
#include <deque>
#include <iostream>
#define NMAX 5000001
using namespace std;
long v[NMAX];
int main()
{
FILE *f, *g;
long k, n, i;
deque <long> list;
long long sum = 0;
f = fopen("deque.in" , "rt");
g = fopen("deque.out", "wt");
fscanf (f, "%ld", &n);
fscanf (f, "%ld", &k);
for (i = 0; i < n; i++) {
fscanf (f, "%ld", &v[i]);
}
for (i = 0; i < n; i++) {
while ((!list.empty()) && (v[list.back()] >= v[i]))
list.pop_back();
list.push_back(i);
if (list.front() <= i - k) {
list.pop_front();
}
if (i >= k - 1) {
sum+= v[list.front()];
}
}
fprintf(g, "%lld", sum);
return 0;
}