数字排序算法问题
请问为什么这份代码有一些样例无法通过?
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1010;
bool st[N];
struct Data
{
int num,cnt;
bool operator<(const Data &t)const
{
if(cnt!=t.cnt) return cnt>t.cnt;
else return num<t.num;
}
}q[N];
int main()
{
int n;
cin>>n;
int t=0;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
q[x].num=x;
q[x].cnt++;
if(!st[x]) t++;
st[x]=true;
}
sort(q,q+n);
for(int i=0;i<t;i++)
cout<<q[i].num<<' '<<q[i].cnt<<endl;
return 0;
}