这题主要就是考个排序。用库函数就没意思了,这里给个简洁的快排模板。

#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;
}