结构体+手写比较函数
#include<bits/stdc++.h>
#define maxnn 1000005
using namespace std;
typedef long long ll;
struct node
{
int pos;//记录数字
int cnt=0;//初始化出现次数
}a[1005];
int vis[1005]={0};//标记出现过的数字
bool cmp(node a,node b)
{
if(a.cnt==b.cnt)
return a.pos<b.pos;
return a.cnt>b.cnt;
}
int main()
{
int n,x;
int sum=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x;
if(vis[x]==0)
{
sum++;
vis[x]=1;
}
a[x].pos=x;
a[x].cnt++;
}
sort(a,a+1001,cmp);
for(int i=0;i<sum;i++)
{
cout<<a[i].pos<<' '<<a[i].cnt<<endl;
}
return 0;
}