题解 | #输入n个整数,输出其中最小的k个#
输入n个整数,输出其中最小的k个
http://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c
using namespace std;
int main()
{
int n = 0, k = 0;
while(cin >> n >> k)
{
vector<int> arr;
int num = 0;
while(n--)
{
cin >> num;
arr.push_back(num);
}
vector<int> vec(k, 0);
priority_queue<int> Q;
for (int i = 0; i < k; ++i)
{
Q.push(arr[i]);
}
for (int i = k; i < (int)arr.size(); ++i)
{
if (Q.top() > arr[i])
{
Q.pop();
Q.push(arr[i]);
}
}
for (int i = 0; i < k; ++i)
{
vec[i] = Q.top();
Q.pop();
}
for(int i = k - 1; i >0; --i)
{
cout << vec[i] << ' ';
}
cout << vec[0] << endl;
}
return 0;
}