问题描述
试题编号: | 201503-2 |
试题名称: | 数字排序 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数n,表示给定数字的个数。 输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。 样例输入 12 样例输出 3 4 评测用例规模与约定 1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。 |
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
// 数字排序
typedef pair<int,int> PAIR;
bool cmp(const PAIR &l,const PAIR &r){
if(l.second == r.second){
return l.first < r.first;
}else{
return l.second > r.second;
}
}
int main(){
int len;
map<int,int> m;
cin >> len;
// cin.ignore();
for(int i=0; i<len; i++){
int temp;
cin >> temp;
m[temp]++;
}
vector<PAIR> v(m.begin(), m.end());
vector<PAIR>::iterator iter;
sort(v.begin(), v.end(), cmp);
for(iter=v.begin(); iter!=v.end(); iter++){
cout << iter->first << " " << iter->second << endl;
}
return 0;
}