Pagini recente » Cod sursa (job #1964669) | Cod sursa (job #1461307) | Cod sursa (job #668143) | Cod sursa (job #527291) | Cod sursa (job #2140081)
# include <stdio.h>
# include <deque>
# include <vector>
int main(void) {
int N, K, El;
long long sum = 0;
FILE *fin = fopen("deque.in", "r");
FILE *fout = fopen("deque.out", "w");
std::deque<int> dq;
std::vector<int> v;
fscanf(fin, "%d%d", &N, &K);
for (int i = 0; i < N; i++) {
fscanf(fin, "%d", &El);
v.push_back(El);
}
fclose(fin);
for (int i = 0; i < K - 1; i++) {
El = v[i];
while (!dq.empty() && El < v[dq[dq.size() - 1]]) {
dq.pop_back();
}
dq.push_back(i);
}
for (int i = K - 1; i < N; i++) {
El = v[i];
while (!dq.empty() && El < v[dq[dq.size() - 1]]) {
dq.pop_back();
}
dq.push_back(i);
sum += v[dq[0]];
if (i - K + 1 >= dq[0]) {
dq.pop_front();
}
}
fprintf(fout, "%lld", sum);
fclose(fout);
return 0;
}