跳转至

问题F - 受欢迎度调查

题目描述

原题面

某大型游乐园发起园内各个游玩项目受欢迎度调查,园内共有 \(n\) 个项目,每个项目的编号分别从 \(1\)\(n\),现在收集到了 \(m\) 张投票,每张票都写了一个最喜欢的游乐项目的编号。现在想把收集到的这些票按照票上的编号从小到大排序。输入 \(n\)\(m\) 以及 \(m\) 张票上的编号,求出排序后的投票编号。

对于 \(30\%\) 的数据点, \(1 \le m \le 20\)
对于 \(60\%\) 的数据点, \(1 \le m \le 2000\)
对于所有数据点, \(1 \le n \le 999,1 \le m \le 100000\)

输入要求

第一行输入两个整数 \(n\)\(m\),分别表示游乐项目总数和收到的投票总数。

第二行输入 \(m\) 个整数,依次表示每张投票上的游乐项目的编号。

输出要求

输出一行,包含 \(m\) 个整数,相邻整数间用一个空格分隔,依次表示排序后的投票编号。

样例

1
2
5 10
2 5 2 2 5 2 2 2 1 2
1
1 2 2 2 2 2 2 2 5 5

解法

省流:排序给定数组。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <bits/stdc++.h>
using namespace std;
vector<int> d;

int main() {
    int n;
    scanf("%d%d", &n, &n);
    for(int i = 1, ia; i <= n; i ++)
        scanf("%d", &ia), d.push_back(ia);
    sort(d.begin(), d.end());
    for(int x : d) printf("%d ", x);
    return 0;
}