Pagini recente » Cod sursa (job #424634) | Cod sursa (job #3345860) | Cod sursa (job #217858) | Monitorul de evaluare | Cod sursa (job #3345859)
#include <iostream>
#include <deque>
#define int long long
using namespace std;
class Solver {
int K;
int index;
std::deque<std::pair<int, int>> dq;
public:
explicit Solver(int K_) : K{K_}, index{1} {}
void appendValue(int value) {
while (dq.size() && (
dq.back().first > value ||
dq.back().second < index - K
)) dq.pop_back();
dq.emplace_back(value, index);
index++;
}
int getMin() {
while (dq.size() && dq.front().second < index - K)
dq.pop_front();
return dq.front().first;
}
};
int main() {
int n, k; cin >> n >> k;
Solver solver{k};
int overallMin = 11111111;
for (int i = 1; i <= n; i++) {
int value; cin >> value;
solver.appendValue(value);
if (i >= k) overallMin = min(overallMin, solver.getMin());
}
cout << overallMin;
}