这题主要就是考个排序。用库函数就没意思了,这里给个简洁的快排模板。
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int n, m;
void quick_sort(int a[], int l, int r)
{
if (l >= r)
return;
int pivot = a[l + r >> 1], i = l - 1, j = r + 1;
while (i < j)
{
do ++i; while (a[i] > pivot);
do --j; while (a[j] < pivot);
if (i < j)
swap(a[i], a[j]);
}
quick_sort(a, l, j);
quick_sort(a, j + 1 , r);
}
int main()
{
while (scanf("%d%d", &n, &m) != EOF)
{
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
quick_sort(a, 0, n-1);
for (int i = 0; i < m && i < n; ++i)
printf("%d ", a[i]);
printf("\n");
}
return 0;
}