60分求助
查看原帖
60分求助
938880
cihuai楼主2023/7/5 09:52
#include<bits/stdc++.h>
#define de(a) cout << #a << " = " << a << endl
#define dd(a) cout << #a << " = " << a << " "
#define pai 3.14159265358979
#define ll long long
#define db double
#define pb push_back
#define all(ve) ve.begin(),ve.end()
#define mp make_pair
#define fi first
#define se second
using namespace std;
typedef pair<int,int> pii;
typedef vector<int> vi;
const int maxn=2e5+5;
int minx,n;
ll a[maxn];
int find()
{
	for(int i=minx;i<n;i++)
	{
		if(a[i])
		{
			minx=i;
			return 0;
		}
	}
}
int main()
{
	ll sum0=0,sum1=0;cin>>n;
	for(int i=0;i<n;i++)
	cin>>a[i];
	sort(a,a+n);
	for(int i=0;i<n;i++)
	{
		if(i%2)
		{
			if(a[minx]>sum1)
			{
				sum1+=a[minx];
				a[minx]=0;
				find();
				continue;
			}
			for(int j=n-1;j>=0;j--)
			{
				if(a[j]<=sum1&&a[j])
				{
					sum1+=a[j];
					a[j]=0;
					break;
				}
			}
		}
		else
		{
			if(a[minx]>sum0)
			{
				sum0+=a[minx];
				a[minx]=0;
				find();
				continue;
			}
			for(int j=n-1;j>=0;j--)
			{
				if(a[j]<=sum0&&a[j])
				{
					sum0+=a[j];
					a[j]=0;
					break;
				}
			}
		}
	}
	cout<<sum0<<" "<<sum1;
    return 0;
}
2023/7/5 09:52
加载中...