Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: nate213121
Problemset: ประลอง
Language: cpp
Time: 0.002 second
Submitted On: 2026-09-06 13:37:11
#include <bits/stdc++.h>
using namespace std;
vector<int> units;
int n;
int leastDiff = INT_MAX;
int leastSizeDiff = INT_MAX;
vector<int> ansT1;
vector<int> ansT2;
void recurse(vector<int> t1, vector<int> t2, int index)
{
if(index == n)
{
int sum1 = 0;
for(auto& x:t1)
{
sum1 += x;
}
int sum2 = 0;
for(auto& x:t2)
{
sum2 += x;
}
int currDiff = abs(sum1 - sum2);
int sizeDiff = abs((int)(t1.size()) - (int)(t2.size()));
if(sizeDiff < leastSizeDiff)
{
leastSizeDiff = sizeDiff;
leastDiff = currDiff;
ansT1 = t1;
ansT2 = t2;
}
else if(sizeDiff == leastSizeDiff)
{
if(currDiff < leastDiff)
{
leastDiff = currDiff;
ansT1 = t1;
ansT2 = t2;
}
}
return;
}
t1.push_back(units[index]);
recurse(t1, t2, index + 1);
t1.pop_back();
t2.push_back(units[index]);
recurse(t1, t2, index + 1);
t2.pop_back();
}
int main()
{
cin >> n;
for(int i = 0; i < n; i++)
{
int tmp;
cin >> tmp;
units.push_back(tmp);
}
vector<int> empty1;
vector<int> empty2;
recurse(empty1, empty2, 0);
int sum1 = 0;
for(auto& x:ansT1)
{
cout << x << " ";
sum1 += x;
}
cout << "sum = " << sum1;
cout << endl;
int sum2 = 0;
for(auto& x:ansT2)
{
cout << x << " ";
sum2 += x;
}
cout << "sum = " << sum2;
return 0;
}