P1271 【深基9.例1】选举学生会
题目描述
学校正在选举学生会成员,有 nnn(1≤n≤9991 \le n\le 9991≤n≤999)名候选人,每名候选人编号分别从 111 到 nnn,现在收集到了 mmm(1≤m≤20000001 \le m \le 20000001≤m≤2000000)张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的选票按照投票数字从小到大排序。设第 iii(1≤i≤m1 \le i \le m1≤i≤m)张选票上的数字为 aia_iai,则保证有 1≤ai≤n1 \le a_i \le n1≤ai≤n。
输入格式
输入 nnn 和 mmm 以及 mmm 个选票上的数字。
输出格式
求出排序后的选票编号。
输入输出样例 #1
输入 #1
5 10
2 5 2 2 5 2 2 2 1 2
输出 #1
1 2 2 2 2 2 2 2 5 5
solution
这道题数据量大,但是每个数据范围很小,很适合用计数排序
代码
#include <sstream>
#include "iostream"
#include "math.h"
#include "algorithm"
#include "string.h"
#include "unordered_set"
#include "deque"
#include "stack"
#include "queue"
#include "vector"
#include "unordered_map"using namespace std;const int N = 1e3;int a[N];int main() {int n, x, m;cin >> n >> m;for (int i = 0; i < m; i++) cin >> x, a[x]++;for (int i = 1; i <= n; i++) {for (int j = 0; j < a[i]; j++) {cout << i << " ";}}return 0;
}