Submission

Status:

---P------

Subtask/Task Score:

10/100

Score: 10

User: nate213121

Problemset: ประลอง

Language: cpp

Time: 0.002 second

Submitted On: 2026-09-06 13:37:46

#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 << endl;
    int sum2 = 0;
    for(auto& x:ansT2)
    {
        cout << x << " ";
        sum2 += x;
    }

    return 0;
}