比赛 20241125 评测结果 WAAWWWAAAW
题目名称 又是决斗 最终得分 50
用户昵称 小金 运行时间 1.066 s
代码语言 C++ 内存使用 6.11 MiB
提交时间 2024-11-25 11:37:57
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,a[1000010],b[1000010],ans,s,t,tot;
map<int,int> ys;
int main()
{
	freopen("duela.in","r",stdin);
	freopen("duela.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)
	{
		if(!ys[a[i]])
		{
			tot++;
			ys[a[i]]=tot;
		}
		b[ys[a[i]]]++;
	}
	s=b[1];
	for(int i=2;i<=tot;i++)
	{
		if(s>=b[i])
		{
			t+=b[i];
			s-=b[i];
			b[i]=0;
		}
		else
		{
			b[i]-=s;
			t+=s;
			s=0;
			if(b[i]<=t*2)
			{
				s+=(b[i]&1);
				t=(t*2+b[i])/2;
				b[i]=b[i]&1;
			}
			else
			{
				s+=(b[i]-t*2);
				b[i]=b[i]-t*2;
				t*=2;
			}
		}
	}
	ans=n-t*2;
	printf("%d",ans);
	return 0;
}