Pagini recente » Cod sursa (job #256999) | Cod sursa (job #2310652) | Cod sursa (job #2373422) | Cod sursa (job #277689) | Cod sursa (job #794500)
Cod sursa(job #794500)
#include <cstdio>
#include <deque>
#define LGMAX 5000001
using namespace std;
FILE *inFile = fopen ("deque.in", "r");
FILE *outFile = fopen ("deque.out", "w");
deque <int> D;
int n;
int k;
long long a[LGMAX];
void read()
{
fscanf (inFile, "%d %d\n", &n, &k);
for (int i = 0; i < n; ++i)
fscanf (inFile, "%lld\n", &a[i]);
}
long long sum()
{
long long s = 0;
for (int i = 0; i < n; ++i)
{
while (!D.empty() && a[D.back()] > a[i])
D.pop_back();
D.push_back(i);
if (D.front() <= i - k)
D.pop_front();
if (i >= k - 1)
s += a[D.front()];
}
return s;
}
int main()
{
read();
fprintf (outFile, "%lld\n", sum());
return 0;
}