题目背景
#警告:数据可能存在加强
题目描述
某次科研调查时得到了nn个自然数,每个数均不超过1500000000(1.5 \times 10^9)1500000000(1.5×109)。已知不相同的数不超过1000010000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入格式
共n+1n+1行。
第一行是整数nn,表示自然数的个数;
第22至n+1n+1每行一个自然数。
输出格式
共mm行(mm为nn个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出22个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
输入输出样例
输入 #1复制
8
2
4
2
4
5
100
2
100
输出 #1复制
2 3
4 2
5 1
100 2
说明/提示
40\%40%的数据满足:1 \le n \le 10001≤n≤1000
80\%80%的数据满足:1 \le n \le 500001≤n≤50000
100\%100%的数据满足:1 \le n \le 2000001≤n≤200000,每个数均不超过1500 000 000(1.5 \times 10^9)1500000000(1.5×109)
NOIP 2007 提高第一题
代码了咯:
#include<bits/stdc++.h>
using namespace std;
int main() {
map <int,int> a;
set <int> b;
int n,i,q;
cin>>n;
for(i=1; i<=n; i++) {
scanf("%d",&q);
a[q]++;
b.insert(q);
}
for(set<int>::iterator it=b.begin(); it!=b.end(); it++)
printf("%d %d\n",*it,a[*it]);
}
求点赞加关注!!!!