简单模拟题

1.我们用一个vis标记数组,每当我们把一个数赋值给另外一个就把它标记一次这样在下一次遇到相同的数的时候我们只需要判断一下它是否被赋值了,如果没有那就赋值,如果有那就跳过

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e3 + 10;
int a[maxn], b[maxn], vis[maxn];
int main()
{
    int ans, n;
    while (~scanf("%d", &n))
    {
        memset(vis, 0, sizeof(vis));
        ans = 0;
        for (int i = 1; i <= n; ++i)
            scanf("%d", &a[i]);
        for (int i = 1; i <= n; ++i)
        {
            if (!vis[a[i]])
            {
                b[++ans] = a[i];
                vis[a[i]] = 1;
            }
        }
        sort(b + 1, b + ans + 1);
        printf("%d\n", ans);
        for (int i = 1; i <= ans; ++i)
            printf("%d ", b[i]);
        puts("");
    }
}