Pagini recente » Cod sursa (job #2432897) | Cod sursa (job #373059) | Cod sursa (job #3253184) | Cod sursa (job #404059) | Cod sursa (job #2731795)
// problema deque
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#define NMax 5000000
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k;
long long sum;
deque<pair<int, int>> s; // s.back() este mereu valoarea cautata
void input() {
fin >> n >> k;
}
void update_front(int val, int k) {
while (!s.empty() && s.front().first > val) s.pop_front();
s.push_front({val, k});
}
void update_back(int k) {
if (s.back().second == k) s.pop_back();
}
void solve() {
int i, x;
for (i = 1; i <= k; ++i) {
fin >> x;
update_front(x, i);
}
for (i = k + 1; i <= n; ++i) {
sum += (long long) s.back().first;
fin >> x;
update_back(i - k);
update_front(x, i);
}
sum += (long long) s.back().first;
fout << sum;
}
int main() {
input();
solve();
}