Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: SayRo

Problemset: ประลอง

Language: cpp

Time: 0.002 second

Submitted On: 2026-10-08 13:58:40

#include<bits/stdc++.h>
using namespace std;
vector<int> unit;
vector<int> BestTeam;
vector<int> CurTeam;
int n;
int TotalPower=0;
int PDiff;
int Best_Diff=INT_MAX;
int Cur_Diff;
void solve(int size, int power, int idx){
    Cur_Diff=abs(power*2-TotalPower);
    if(size==(n/2)){
        if(Cur_Diff<Best_Diff){
            BestTeam=CurTeam;
            Best_Diff=Cur_Diff;
        }
        return;
    }
    if(Best_Diff==PDiff) return;
    if(idx==n) return;
    if(size+(n-idx)<(n/2)) return;
    CurTeam[idx]=2;
    solve(size,power,idx+1);
    CurTeam[idx]=1;
    solve(size+1,power+unit[idx],idx+1);
    CurTeam[idx]=2;
}

int main(){
    cin.tie(nullptr)->sync_with_stdio(0);
    cin>>n;
    unit.resize(n);
    BestTeam.resize(n);
    CurTeam.resize(n,2);
    for(int i=0;i<n;i++){
        cin>>unit[i];
        TotalPower+=unit[i];
    }
    PDiff=TotalPower%2;
    solve(0,0,0);
    for(int i=0;i<n;i++){
        if(BestTeam[i]==1) cout<<unit[i]<<" ";
    }
    cout<<endl;
    for(int i=0;i<n;i++){
        if(BestTeam[i]==2) cout<<unit[i]<<" ";
    }
}