[题目通道]([AHOI2018初中组] 分组 - 洛谷)
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+40;
int f[MAXN],n,ans=1e9,siz[MAXN],top,q[MAXN];
signed main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>f[i];
sort(f+1,f+n+1);
for(int i=1;i<=n;i++){
int pos=lower_bound(q+1,q+top+1,f[i])-q;
while(q[pos+1]==f[i]&&pos<top) pos++;
if(pos>top||q[pos]!=f[i]) siz[++top]=1,q[top]=f[i]+1;
else siz[pos]++,q[pos]++;
}
for(int i=1;i<=top;i++) ans=min(ans,siz[i]);
cout<<ans<<endl;
return 0;
}