Pagini recente » Cod sursa (job #1724108) | Cod sursa (job #2687602) | Cod sursa (job #92872) | Cod sursa (job #2101667) | Cod sursa (job #2798963)
#include <stdio.h>
#include <deque>
FILE *fin, *fout;
const int NMAX = 5e6;
int N, K;
long long s;
int v[NMAX + 1];
std :: deque<int>q;
int main() {
fin = fopen("deque.in", "r");
fout = fopen("deque.out", "w");
fscanf(fin, "%d %d", &N, &K);
for(int i = 1; i <= N; i++) {
fscanf(fin, "%d", &v[i]);
}
for(int i = 1; i <= N; i++) {
while(!q.empty() && v[q.back()] >= v[i]) {
q.pop_back();
}
q.push_back(i);
if(i >= K) {
while(q.front() <= i - K) {
q.pop_front();
}
s += v[q.front()];
}
}
fprintf(fout, "%lld\n", s);
fclose(fin);
fclose(fout);
return 0;
}