Pagini recente » Cod sursa (job #53858) | Cod sursa (job #1746433) | Cod sursa (job #2090343) | Cod sursa (job #2764729) | Cod sursa (job #3169963)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
const int NMAX = 5e6;
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;
}
signed main() {
read();
solve();
display();
return 0;
}