寻找众数,其中一个测试点过不了


#include<stdio.h>
int main(){
int i,j,k,n,temp,a[1000],b[1000],c[1000],N,M;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}
for(i=0;i<n;i++){b[i]=1;int flag=0;for(k=0;k<i;k++){if(i!=k&&a[i]==a[k])flag=1;}if(flag==0){for(j=0;j<n;j++){if(i!=j&&a[i]==a[j]){b[i]++;}}}}
for(j=1;j<=n;j++){for(i=0;i<n-j;i++){if (b[i]<b[i+1]){temp=b[i];b[i]=b[i+1];b[i+1]=temp;temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}}N=b[0];M=1;c[0]=a[0];j=1;for(i=1;i<n;i++){N=N+b[i];}if(N==n){printf("-1");}else{for(i=1;i<n;i++){if(b[0]==b[i]){M+=1;c[j]=a[i];j++;}}for(i=1;i<=M;i++){for(j=0;j<M-i;j++){if(c[j]>c[j+1]){temp=c[j];c[j]=c[j+1];c[j+1]=temp;}}}
for(i=0;i<M;i++){printf("%d ",c[i]);}}
return 0;}