Pagini recente » Cod sursa (job #33219) | Cod sursa (job #2783785) | Cod sursa (job #1228028) | Cod sursa (job #2494726) | Cod sursa (job #764878)
Cod sursa(job #764878)
#include <stdio.h>
#include <deque>
using namespace std;
int v[5000001];
deque< pair<int, int> > Q;
long long s;
int n, k;
void ins_back(int poz, int el) {
while (Q.size() > 0 && Q.back().second >= el) {
Q.pop_back();
}
pair<int, int> p;
p.first = poz;
p.second = el;
Q.push_back(p);
}
void del_front(int poz) {
if (poz > Q.front().first) {
Q.pop_front();
}
}
void solve_() {
for (int i = 0; i < k-1; i++) {
ins_back(i, v[i]);
}
for (int j = k-1; j < n; j++) {
ins_back(j, v[j]);
del_front(j - k + 1);
s += (long long)Q.front().second;
}
printf("%lld", s);
}
void read_() {
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d", &v[i]);
}
}
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
read_();
solve_();
return 0;
}