30分求助
查看原帖
30分求助
371364
Biuld楼主2021/7/23 09:13
#include<bits/stdc++.h>
using namespace std;
long long n,a,s[1000001],ans,f,x;
double k;
int main()
{
	scanf("%lld",&n);
	for(long long i=1;i<=n;i++)
	{
		long long a;
		scanf("%lld",&a);
		s[a]++;
	}
	for(long long i=1;i<=100000;)
	{
		if(k==n-1) break;
		if(f==0 && s[i]>1)
		{
			s[i]-=2;
			ans+=i*2;
			s[i+i]++;
			k++;
			continue;
		}
		if(f==0 && s[i]==1)
		{
			ans+=i;
			f++;
			s[i]--;
			x=i;
			k+=0.5;
			continue;
		}
		if(f==1 && s[i]>=1)
		{
			ans+=i;
			f=0;
			s[i]--;
			s[i+x]++;
			k+=0.5;
			continue;
		}
		i++;
	}
	printf("%lld",ans);
	return 0;
}
2021/7/23 09:13
加载中...