0分,求调
查看原帖
0分,求调
1053119
hard_learn楼主2024/5/1 15:27
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int a[500005];
map<int,int>sum;
int ans[500005];
bool flag[500005];
bool cmp(int a,int b){
	return a>b;
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie();cout.tie(); 
	cin>>n;
	int cnt=n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		sum[a[i]]++;
	}	
	sort(a+1,a+n+1);
	int o=0;
	for(int i=1;i<=n;i++){
		ans[++o]=sum[a[i]];
		while(1){
			if(a[i]==a[i+1]){
				i++;
			}
			else{
				break;
			}
		}
	}
	sort(ans+1,ans+o+1,cmp);
	for(int i=1;i<=o;i++){
		if(flag[i]==0){
			flag[i]=1;
			int t=(ans[i]*2-1)-ans[i];
			for(int j=n;j>=1;j--){
				if(t<ans[j]||flag[j]==1){
					continue;
				}
				else{
					flag[j]=1;
					t-=ans[j];
					cnt--;
				} 
			}	
		}
		else{
			break;
		}
	} 
	cout<<cnt<<endl;
	return 0;
} 
2024/5/1 15:27
加载中...