Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Chayatoeyy
Problemset: ประลอง
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-14 14:18:55
#include<bits/stdc++.h>
using namespace std;
int n,s[100],ans1[100],ans2[100],mn=INT_MAX;
int as1,as2;
void bt(int cur,int s1[],int s2[],int sm1,int sm2,int size1,int size2){
if(cur==n){
if((size1==n/2 && size2==n/2) || (size1==n/2+1 && size2==n/2)){
int diff = abs(sm1-sm2);
if(diff<mn){
mn=diff;
as1 = size1;
as2 = size2;
for(int i=0;i<as1;i++){
ans1[i] = s1[i];
}
for(int i=0;i<as2;i++){
ans2[i] = s2[i];
}
}
}
return;
}
if(size1<n/2+1){
s1[size1] = s[cur];
bt(cur+1,s1,s2,sm1+s[cur],sm2,size1+1,size2);
}
if(size2<n/2){
s2[size2] = s[cur];
bt(cur+1,s1,s2,sm1,sm2+s[cur],size1,size2+1);
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i];
}
int f[n],v[n];
bt(0,f,v,0,0,0,0);
for(int i=0;i<as2;i++){
cout << ans2[i] << " ";
}cout << endl;
for(int i=0;i<as1;i++){
cout << ans1[i] << " ";
}cout << endl;
}