Submission
Status:
---P--P---
Subtask/Task Score:
20/100
Score: 20
User: colo39
Problemset: ประลอง
Language: cpp
Time: 0.005 second
Submitted On: 2026-10-03 16:42:41
#include <bits/stdc++.h>
using namespace std;
int small;
int sum;
int a[105];
int dat[105];
int n;
int min_dif = 2e9;
int best_rs[105];
int rs[105];
bool best_chosen[105];
void sol(int now, int start_idx) {
if (now == small + 1) {
int kuy = 0;
for (int i = 1; i <= small; i++) {
rs[i] = dat[a[i]];
kuy += dat[a[i]];
}
if (abs(kuy - (sum - kuy)) < min_dif) {
min_dif = abs(kuy - (sum - kuy));
memset(best_rs, 0, sizeof(best_rs));
memset(best_chosen, false, sizeof(best_chosen));
for (int i = 1; i <= small; i++) {
best_rs[i] = rs[i];
best_chosen[a[i]] = true; // Mark index as used in Group 1
}
}
return;
}
for (int i = start_idx; i <= n; i++) {
a[now] = i;
sol(now + 1, i + 1);
}
}
int main () {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
int k;
cin >> k;
dat[i] = k;
sum += k;
}
if (n % 2 == 0) small = n / 2;
else small = (n - 1) / 2;
sol(1, 1);
for (int i = 1; i <= small; i++) {
cout << best_rs[i] << " ";
}
cout << "\n";
for (int i = 1; i <= n; i++) {
if (!best_chosen[i]) {
cout << dat[i] << " ";
}
}
cout << "\n";
return 0;
}