统计数字
Time Limit:1000MS Memory Limit:65536K
Total Submit:15 Accepted:10
Description
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
Input
输入包含n+1行:
第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
Output
输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
Sample Input
9
2
3
2
3
3
4
2
5
4
Sample Output
2 3
3 3
4 2
5 1
Source
#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int main()
{
long long t,n;
bool b=true;
while(scanf("%lld",&t)!=EOF)
{
if(!b) printf("\n");
b=0;
map<long long,long long>m;
set<long long>s;
vector<long long>v;
while(t--)
{
scanf("%lld",&n);
if(s.count(n)==0)
{
s.insert(n);
v.push_back(n);
m[n]=1;
}
else m[n]++;
}
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++)
printf("%lld %lld\n",v[i],m[v[i]]);
}
return 0;
}