Subtask #2第二个点WA,求助
查看原帖
Subtask #2第二个点WA,求助
821325
wuren555楼主2023/7/16 07:53

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);
}
2023/7/16 07:53
加载中...