🌬М
Size: a a a
DM
DM
ym
🌬М
j
C
ym
DM
🌬М
DM
DM
j
C
ym
C
C
C
[0,2,2,2,3,4,6,6,6,7,10,12,18,20,30,40,40,50,54,60,60,70,80,80,90,100,120,127]
function split(array) {
function partition(array, mask) {
let a = [], b = [], i = array.length;
while (--i >= 0) {
if ((mask >> i) & 1) a.push(array[i]);
else b.push(array[i]);
}
return [a, b];
}
function diffar(array, mask) {
let d = 0, i = array.length;
while (--i >= 0) {
if ((mask >> i) & 1) d += array[i];
else d -= array[i];
}
return d
}
//array = [...array].sort((a,b) => b - a);
let len = array.length;
let min = Infinity, result, idx;
let target = 0;
let sum = array.reduce((a, b) => a + b);
if (sum % 2) target = 1;
let i = 2 ** (len - 1)
while (--i >= 0) {
let diff = Math.abs(diffar(array, i))
if (diff < min) {
if (diff === target) return partition(array, i);
idx = i;
min = diff;
}
}
return partition(array, idx);
}