Pagini recente » Cod sursa (job #2675659) | Cod sursa (job #3160074) | 2233 | Cod sursa (job #352727) | Cod sursa (job #1845272)
#include <stdio.h>
#include <deque>
using namespace std;
FILE*fin = fopen("deque.in", "r");
FILE*fout = fopen("deque.out", "w");
#define NMax 5000001
deque<int> Min;
int n, k, v[NMax];
unsigned long long S;
int main()
{
int i;
fscanf(fin, "%d %d", &n, &k);
for(i = 1; i <= n; i++)
fscanf(fin, "%d", &v[i]);
for(i = 1; i <= k; i++) {
while(!Min.empty() && v[i] <= v[Min.back()])
Min.pop_back();
Min.push_back(i);
}
S += v[Min.front()];
for(i = k + 1; i <= n; i++) {
if(Min.front() <= i - k)
Min.pop_front();
while(!Min.empty() && v[i] <= v[Min.back()])
Min.pop_back();
Min.push_back(i);
S += v[Min.front()];
}
fprintf(fout, "%d\n", S);
return 0;
}