Pagini recente » Cod sursa (job #2311795) | Cod sursa (job #2851622) | Cod sursa (job #3248937) | Cod sursa (job #1088666) | Cod sursa (job #3169961)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
const int NMAX = 5e5;
long long suma;
int n, k, a[NMAX];
void read() {
cin >> n >> k;
for (int index = 0; index < n; ++index) {
cin >> a[index];
}
}
void solve() {
deque <int> dq;
for (int index = 0; index < k; ++index) {
while (dq.empty() == false && a[index] < a[dq.back()]) {
dq.pop_back();
}
dq.push_back(index);
}
suma += a[dq.front()];
for (int index = k; index < n; ++index) {
while (dq.empty() == false && a[index] < a[dq.back()]) {
dq.pop_back();
}
dq.push_back(index);
if (index - k >= dq.front()) {
dq.pop_front();
}
suma += a[dq.front()];
}
}
void display() {
cout << suma;
}
int main() {
read();
solve();
display();
return 0;
}