如下,洛谷自测85,赛时样例全过
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+20;
int n,r[N],ans;
int minnum=1,minf;
inline int read(){
int x=0,k=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-') k=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
return x*k;
}
int main(){
n=read();
ans=n;
for(int i=1;i<=n;i++) r[i]=read();
sort(r+1,r+n+1);
minf=r[1];
for(int i=2;i<=n;i++){
if(r[i]==minf)
minnum++;
else{
if( (ans-minnum) >=minnum ){
minf=r[i];
ans-=minnum;
minnum=1;
}
else{
ans-=(ans-minnum);
break;
}
}
}
cout<<ans;
return 0;
}