#include <stdio.h>
#include <iostream>
#include <math.h>
#include <set>
#include <vector>
using namespace std;
void get_min_k(const std::vector<int> &vec, int k) {
if (k <= 0 || k > vec.size()) {
return;
}
std::multiset<int> int_set;
for (int i = 0; i < k; i++) {
int_set.insert(vec[i]);
}
int max = *(int_set.rbegin());
for (int i = k; i < vec.size(); ++i) {
if (vec[i] < max) {
int_set.insert(vec[i]);
int_set.erase(--int_set.end());
max = *(int_set.rbegin());
}
}
for (auto itor = int_set.begin(); itor != int_set.end(); itor++)
cout << *itor << endl;
}
int main() {
std::vector<int> vec = {10, 8, 2, 1, 1, 3,-1,5,4};
get_min_k(vec, 5);
return 0;
}