Pagini recente » Cod sursa (job #2066399) | Monitorul de evaluare | Cod sursa (job #2667651) | Cod sursa (job #2477658) | Cod sursa (job #2921666)
#include <fstream>
#include <iostream>
#include <vector>
#include <cassert>
#include <cstring>
#include <set>
#include <unordered_map>
#include <memory>
#include <deque>
using namespace std;
int main() {
ifstream f("deque.in");
ofstream g("deque.out");
int N, K;
f >> N >> K;
long long sum = 0;
int vals[N], pos[N];
int left = 0, right = 0;
for (int i = 0; i < N; i++) {
int X;
f >> X;
while (left < right && vals[right - 1] >= X)
--right;
vals[right] = X;
pos[right++] = i;
while (left < right && pos[left] <= i - K)
++left;
if (i + 1 >= K)
sum += vals[left];
}
g << sum << '\n';
f.close();
g.close();
return 0;
}