问题描述
某次科研调查时得到了n个自然数,每个数均不超过1.5109。已知不相同的数不会超过10000个,现在需要统计这些自然数各自出现的个数,并按照自然数从小到大的顺序输出统计结果。
输入
输入文件count.in包含n+1行;
第一行是整数n,表示自然数的个数,
第2~n+1行每一行一个自然数。
输出
输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的个数,其间用一个空格隔开。
输入输出样例
count.in
8
2
4
2
4
5
100
2
100
count.out
2 3
4 2
5 1
100 2
限制
40%的数据满足1<=n<=1000
80%的数据满足1<=n<=50000
100%的数据满足1<=n<=200000,每个数均不超过1.5*109
#include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const unsigned long long MAXN=200000+10; bool comp(int a,int b) { return a<b; } int sum[MAXN],n,Count=1; int main() { freopen("count.in","r",stdin); freopen("count.ans","w",stdout); cin>>n; for(int i=1;i<=n;i++) cin>>sum[i]; sort(sum+1,sum+n+1,comp); for(int i=2;i<=n;i++) { if(sum[i]==sum[i-1]) Count++; else { cout<<sum[i-1]<<" "<<Count<<endl; Count=1; } } cout<<sum[n]<<" "<<Count<<endl; return 0; }
时间: 2024-10-13 09:45:43