题目描述
某次科研调查时得到了n个自然数,每个数均不超过 1500000000。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入格式
第1行为1个正整数 ,表示有 个整数;
第 2行有 n个用空格隔开的自然数。
输出格式
由小到大输出每个数出现的次数。
样例
样例输入
8
2 4 2 4 5 100 2 100
样例输出
2 3
4 2
5 1
100 2
数据范围与提示
100%的数据满足:1<n<200000,每个数均不超过 1,500,000,000
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
freopen("B.in", "r", stdin);
freopen("B.out", "w", stdout);
int n, i = 0;
cin >> n;
map<int, int> mp;
int num[10000];
for (int j = 0; j < n; j++) {
int p;
cin >> p;
if (mp.find(p) != mp.end()) {
mp[p]++;
} else {
mp[p] = 1;
num[i++] = p;
}
}
sort(num, num + i);
for (int j = 0; j < i; j++) {
cout << num[j] << ' ' << mp[num[j]] << endl;
}
return 0;
}