考场的神奇思路,打出来小样例过了,大样例半天没出结果,求大佬帮算复杂度
#include<bits/stdc++.h>
using namespace std;
int n;
int inx,ans;
struct s{
int num,q;
}a[100001];
int xb[100001],flag[100001];
int r;
bool tst(s a,s b){
return a.q<b.q;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>r;
if(flag[r]==0){
xb[r]=++inx;
flag[r]++;
a[xb[r]].q=r;
}
a[xb[r]].num++;
}
sort(a+1,a+1+inx,tst);
for(int i=1;i<n;i++){
if(a[i+1].num>=a[i].num){
ans+=a[i].num;
}else{
ans+=a[i+1].num;
a[i+1].num+=(a[i].num-a[i+1].num);
}
}
cout<<n-ans;
return 0;
}