Pagini recente » Cod sursa (job #3142213) | Cod sursa (job #2136908) | Cod sursa (job #1591342) | Cod sursa (job #621193) | Cod sursa (job #1076527)
#include <cstdio>
#include <deque>
using namespace std;
int v[5000001];
int main()
{
FILE *in, *out;
in = fopen ("deque.in", "r");
out = fopen ("deque.out", "w");
deque <int> dq;
long long suma = 0;
int n, k; fscanf (in, "%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
fscanf (in, "%d", &v[i]);
for (int i = 1; i <= n; ++i)
{
while (dq.size() > 0 && dq.front() <= dq.back() && v[i] <= v[dq.back()])
dq.pop_back();
dq.push_back(i);
if (dq.front() == i - k)
dq.pop_front();
if (i >= k)
suma += v[dq.front()];
}
fprintf (out, "%lld\n", suma);
fclose (in);
fclose (out);
return 0;
}