直接桶排。O(n)

#include <cstring>
using namespace std;
int a[1010];
int main()
{
    int n = 0, count = 0;
    cin >> n;
    memset(a, 0, sizeof(a));
    for (int i = 1; i <= n; i++)
    {
        int t = 0;
        cin >> t;
        if (!a[t])
        {
            a[t] = 1;
            count++;
        }
    }
    cout << count << endl;
    for (int i = 1; i <= 1000; i++)
    {
        if (a[i]) cout << i << ' ';
    }
    return 0;
}