DM
Size: a a a
C
NS
DM
function solve(arr) {вот мое убер решение 😎
function take(set1sum, set2sum=0, mapper=0, s=0) {
let result = { mapper, set1sum, set2sum }
for (let i=s; i<arr.length; i++) {
const bit = 1 << i
if (!(mapper & bit)) {
const x = arr[i]
if ((set1sum - x) - (set2sum + x) < set1sum - set2sum) {
const r = take( set1sum - x, set2sum + x, mapper | bit, i)
const d = Math.abs(r.set1sum - r.set2sum)
if (d < Math.abs(result.set1sum - result.set2sum)) {
if (d === 0) return r
result = r
}
}
}
}
return result
}
const sum = arr.reduce((acc, cur) => acc+cur, 0)
const { set1sum, set2sum, mapper } = take( sum )
const set1 = []
const set2 = []
for (let i=0; i<arr.length; i++) {
if (mapper & 1 << i) {
set2.push(arr[i])
} else {
set1.push(arr[i])
}
}
return { set1, set2, set1sum, set2sum }
}
DM
C
DM
C
DM
AG
DM
ul
надо растянуть поширеSV
Р
C
DM
DM
DM
DM
AG