Pagini recente » Cod sursa (job #1201385) | Cod sursa (job #2337627) | Cod sursa (job #2287033) | Cod sursa (job #2945053) | Cod sursa (job #2940301)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <bitset>
#include <stack>
#include <queue>
#include <deque>
using namespace std;
#ifdef LOCAL
ifstream fin("input.txt");
#define fout cout
#else
ifstream fin("deque.in");
ofstream fout("deque.out");
#endif
const int NMAX = 5e6+5;
int n, k, a[NMAX];
deque<int> dq;
int64_t ans;
void add(int idx) {
while (!dq.empty() && a[dq.back()] >= a[idx])
dq.pop_back();
dq.push_back(idx);
}
void remove(int idx) {
while (!dq.empty() && dq.front() <= idx)
dq.pop_front();
}
int64_t query() {
return a[dq.front()];
}
int main() {
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> a[i];
for (int i = 1; i <= k; i++)
add(i);
ans = query();
for (int i = 2; i <= n - k + 1; i++) {
add(i + k - 1);
remove(i - 1);
ans += query();
}
fout << ans;
return 0;
}