思路:用map统计每一个数的个数,将map存入vector<pair<int,int> >中,对vector进行排序,自定义cmp函数。这是一个模板,map按值Value排序。
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool cmp(pair<int,int> a,pair<int,int> b){
if(a.second == b.second) {
return a.first < b.first;
}
return a.second > b.second;
}
int main(){
int n;
cin>>n;
map<int,int> m;
for(int i = 0; i < n; i++){
int val;
cin>>val;
m[val]++;
}
vector<pair<int,int> > v;
for(map<int,int> :: iterator it = m.begin(); it != m.end(); it++){
// cout<<it->first<<' '<<it->second<<endl;
v.push_back(make_pair(it->first,it->second));
}
sort(v.begin(),v.end(),cmp);
for(vector<pair<int,int> > :: iterator it = v.begin(); it != v.end(); it++){
cout<<it->first<<' '<<it->second<<endl;
}
return 0;
}