Submission
Status:
P-PP-PP--P
Subtask/Task Score:
60/100
Score: 60
User: pxsit
Problemset: ประลอง
Language: cpp
Time: 0.002 second
Submitted On: 2025-05-28 00:05:10
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n)) return 0;
vector<ll> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int k = n / 2; // size of team 1
ll total = accumulate(a.begin(), a.end(), 0LL);
ll bestDiff = LLONG_MAX;
int bestMask = 0;
int full = 1 << n;
for (int mask = 0; mask < full; mask++) {
if (__builtin_popcount(mask) != k) continue;
ll sum1 = 0;
for (int i = 0; i < n; i++) {
if (mask & (1 << i)) sum1 += a[i];
}
ll sum2 = total - sum1;
ll diff = llabs(sum1 - sum2);
if (diff < bestDiff) {
bestDiff = diff;
bestMask = mask;
}
}
// Output team 1
bool first = true;
for (int i = 0; i < n; i++) {
if (bestMask & (1 << i)) {
if (!first) cout << ' ';
cout << a[i];
first = false;
}
}
cout << "\n";
// Output team 2
first = true;
for (int i = 0; i < n; i++) {
if (!(bestMask & (1 << i))) {
if (!first) cout << ' ';
cout << a[i];
first = false;
}
}
cout << "\n";
return 0;
}