首页 > 代码库 > 【排序+模拟】vijos 1816 统计数字

【排序+模拟】vijos 1816 统计数字

标签:NOIP提高组2007

 

描述

某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

格式

输入格式

第1行是整数n(1<=n<=200000),表示自然数的个数。

第2~n+1行每行一个自然数。

输出格式

输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

样例1

样例输入1[复制]

8 2 4 2 4 5 100 2 100

样例输出1[复制]

2 3 4 2 5 1 100 2 

限制

每个测试点1s。

来源

NOIP2007提高组

普及组的模拟题 这种水题都刷真的是大丈夫吗

# include<cstdio># include<cstring># include<iostream># include<algorithm>using namespace std;typedef long long LL;const int maxn=200000+10;LL num[maxn];int main(){    ios::sync_with_stdio(false);    int n;cin>>n;    for(int i=1;i<=n;i++)cin>>num[i];    sort(num+1,num+n+1);    LL cur=num[1],tot=0;    for(int i=1;i<=n;i++){        if(num[i]!=cur){cout<<cur<<" "<<tot<<endl;cur=num[i];tot=1;}        else tot++;    }    cout<<cur<<" "<<tot<<endl;    return 0;}

 

【排序+模拟】vijos 1816 统计数字