rt,这里是我的代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
long long n,k,tmp,ans,cnt,sigma,ans1;
long long c[N];
int cmp(int x,int y){
return x>y;
}
void solve(int x){
int cen,cha;
cen=1;
while(k!=0){
cha=c[1]-c[cen+1];
if(cha*cen<=k){
for(int i=1;i<=cen;i++){
c[i]-=cha;
sigma+=cha;
k-=cha;
}
cen++;
}
else{
break;
}
}
int tt;
tt=c[1];
for(int i=1;i<=cnt+1;i++){
if(c[i]==tt){ans++;}
else if(c[i]+sigma+k>=tt-k&&c[i]+sigma+k>=c[2]){ans++;}
}
if(ans<=cnt) cout<<ans;
else cout<<"pigstd";
}
int main(){
ans=0;
cnt=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>tmp;
if(c[tmp]==0) cnt++;
c[tmp]++;
}
sort(c+1,c+1+n,cmp);
if(k==0){
ans++;
for(int i=2;i<=cnt;i++){
if(c[i]==c[i-1]) ans++;
else break;
}
cout<<ans;
}
else if(k>=(n/2)){
cout<<"pigstd";
}
else if(k>=(c[1])){
cout<<"pigstd";
}
else if(c[1]<=2*k&&k>=c[2]){
cout<<"pigstd";
}
else solve(1);
}