P9460众数I 60分求调(WA了两个点)
查看原帖
P9460众数I 60分求调(WA了两个点)
552286
流光萤影楼主2023/7/16 14:39

WA了Subtask1的#5和Subtask2的#9

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int n,k,b[10000005],tmp,ans;
bool cmp(int x,int y)
{
	return x > y;
}
int main()
{
	cin >> n >> k;
	for(int i = 1;i <= n;i++)
	{
		cin >> tmp;
		b[tmp]++;
	}
	sort(b,b+n,cmp);
	if(ceil(0.5*n) <= k) cout << "pigstd";
	else if(b[0] <= k) cout << "pigstd";
	else
	{
		if(k == 0)
		{
			if(b[0] == 1) cout << n;
			else
			{
				for(int i = 0;i < n;i++) if(b[i] == b[0]) ans++;
				cout << ans;
			}
		}
		else
		{
	        if(b[0]-k > b[1]+k)
	        {
	        	cout << 1;
	        	return 0;
			}
	        int i = 0,j,len = b[0];
	        while(ceil(1.0*(len-k)/(i+1)) <= b[i+1] && b[i+1]+k >= b[0]-k)
	        {
	        	if(k >= b[i+1])
	        	{
					cout << "pigstd";
					return 0;
				}
				j = i + 1;
	        	while(b[j]+k >= b[i+1]) j++;
				len += b[++i];
			}
			cout << j;
		}
	}
}
2023/7/16 14:39
加载中...