Pagini recente » Cod sursa (job #261466) | Cod sursa (job #732696) | Cod sursa (job #261445) | Cod sursa (job #2480620) | Cod sursa (job #2813417)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int arr[5000000];
int main() {
int arr_length, seq_length;
fin >> arr_length >> seq_length;
for (int i = 0; i < arr_length; ++i) {
fin >> arr[i];
}
deque<int> best_pos_min;
long long sum = 0;
for (int i = 0; i < arr_length; ++i) {
while (best_pos_min.size() && arr[best_pos_min.back()] > arr[i]) {
best_pos_min.pop_back();
}
best_pos_min.push_back(i);
if (i >= seq_length - 1) {
sum += arr[best_pos_min.front()];
}
if (best_pos_min.front() == i - seq_length + 1) {
best_pos_min.pop_front();
}
}
fout << sum;
return 0;
}