最小非零元素
【题目描述】Q哥给了小Q一个长度为n正整数序列ai。
Q哥要求小Q重复以下操作步骤k轮:
1、发现最小的非零元素x。
2、打印x。
3、将序列中所有非零元素减x。
小Q把这个艰巨的任务交给了你,希望你能帮帮他。
输入描述
输入包括两行。
第一行包括两个正整数n和k(1<=n,k<=105)。
第二行包括n个正整数ai(1<=ai<=109)。
输出描述
输出k行,即每轮中的最小非零整数(如果到某轮所有元素都是0,打印0即可)。
示例1
输入
|
输出
|
#include <iostream>
#include <string>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> nums;
while (n--) {
int x;
cin >> x;
nums.push_back(x);
}
sort(nums.begin(),nums.end());
while (k--)
{
while (nums.size() && nums[0] <= 0)
{
nums.erase(nums.begin());
}
if (nums.empty()) {
cout << "0" << endl;
}
else
{
int x = nums[0];
cout << x << endl;
nums.erase(nums.begin());
for (int i = 0; i < nums.size(); i++) {
nums[i] -= x;
}
}
}
system("pause");
return 0;
}