第四题没那么复杂
#include <bits/stdc++.h>
int main(int argc, const char* argv[]) {
std::ios::sync_with_stdio(false);
size_t N, K;
std::cin >> N >> K;
std::vector<size_t> val(N);
for(size_t i = 0; i < N; i++) {
std::cin >> val[i];
}
std::sort(val.begin(), val.end());
size_t idx = 0;
size_t previous = 0;
for(size_t i = 0; i < K; i++) {
if(idx == N) {
std::cout << "0\n";
continue;
}
std::cout << val[idx] - previous << std::endl;
previous = val[idx];
for(; idx < N; idx++) {
if(val[idx] != previous) {
break;
}
}
}
return EXIT_SUCCESS;
} 第三题举反例,最大数远大于其他数,然后最佳解应该是【最大数+较小的一半数】/【除了最大外的较大的一半数】