Submission

Status:

P-PPPP---P

Subtask/Task Score:

60/100

Score: 60

User: VggT

Problemset: ประลอง

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-16 11:23:47

#include <bits/stdc++.h>
using namespace std;

void bt(vector<int> player,vector<int> &ans, vector<int> current, int sum, int &sumcurrent, int &mindiff, int size1, int index)
{
	if(current.size() == size1)
	{
		if(mindiff > abs((sum-sumcurrent)-sumcurrent))
		{
			ans = current;
			mindiff = abs((sum-sumcurrent)-sumcurrent);
		}
		return;
	}
	
	for(int i = index; i < player.size(); i++)
	{
		if(player[i] == 0) continue;
		current.push_back(player[i]);
		sumcurrent+=player[i];
		bt(player,ans,current,sum,sumcurrent,mindiff,size1,i+1);
		current.pop_back();
		sumcurrent-=player[i];
	}
	
	return;
}

int main()
{
	cin.tie(0)->sync_with_stdio(0);
	int n;
	cin >> n;
	int size1 = 0, size2 = 0;
	if(n%2 != 0)
	{
		size1 = (n-1)/2;
		size2 = (n+1)/2;
	}
	else
	{
		size1 = n/2;
		size2 = n/2;
	}
	
	vector<int> team1;
	vector<int> team2;
	
	vector<int> player(n);
	
	int sum = 0;
	
	for(auto &a : player)
	{
		cin >> a;
		sum+=a;
	}
	
	vector<int> ans;
	vector<int> current;
	
	int currentsum = 0;
	
	int mindiff = INT_MAX;
	
	int sumcurrent = 0;
	
	bt(player,ans,current,sum,sumcurrent,mindiff,size1,0);
	
	team1 = ans;
	
	int j = 0;
	
	for(int i = 0; i < player.size(); i++)
	{
		if(player[i] == team1[j])
		{
			j+=1;
			continue;
		}
		else cout << player[i] << ' ';
	}
	
	cout << '\n';
	
	for(auto a : team1) cout << a << ' ';
	
	cout << '\n';
	
	
	

	return 0;
}