资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入格式
输入包含n+1行:
第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
输出格式
输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
样例输入
8
2
4
2
4
5
100
2
100
样例输出
2 3
4 2
5 1
100 2
数据规模和约定
40%的数据满足:1<=n<=1000
80%的数据满足:1<=n<=50000
100%的数据满足:1<=n<=200000,每个数均不超过1 500 000 000(1.5*109)
由于该题无法使用桶排序,所以我选择使用stl组合,map加上unique,代码简单易懂
#include <bits/stdc++.h>
using namespace std;
long long a[200005];
struct nub{
long long number,sum;
}nu[200005];
bool cmp(nub a, nub b){
return a.number < b.number;
}
int main(){
map<long long, int

这是一个关于统计不超过1.5亿的自然数出现次数的问题,输入包含多个自然数,不相同的数不超过10000个。要求按照自然数从小到大的顺序输出统计结果。解决方案是使用C++的STL,结合map和unique来实现。
最低0.47元/天 解锁文章
608

被折叠的 条评论
为什么被折叠?



