// your code goes here
function test() {
var pairs = [[0.08, -0.12], [0.07, -0.13], [0.03, -0.7], [0.14, -0.2], [0.06, -0.09]];
var sum = 0, sum0, sum1, newSum;
var selected = [];
$.each(pairs, function(k, v) {
sum0 = sum + v[0];
sum1 = sum + v[1];
var i = Math.abs(sum1) > Math.abs(sum0) ? 0 : 1;
selected.push(i);
sum += v[i];
});
var checkAgain = false;
do {
$.each(pairs, function(k, v) {
var selectedKey = selected[k];
var nonSelectedKey = selected[k] === 1 ? 0 : 1;
newSum = sum - v[selectedKey] + v[nonSelectedKey];
if (newSum > 0 && newSum < sum) {
sum = newSum;
selected[k] = nonSelectedKey;
checkAgain = true;
console.log(sum, selected);
return false;
}
});
} while (checkAgain)
console.log(sum, selected);
}
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQpmdW5jdGlvbiB0ZXN0KCkgewoKCXZhciBwYWlycyA9IFtbMC4wOCwgLTAuMTJdLCBbMC4wNywgLTAuMTNdLCBbMC4wMywgLTAuN10sIFswLjE0LCAtMC4yXSwgWzAuMDYsIC0wLjA5XV07Cgl2YXIgc3VtID0gMCwgc3VtMCwgc3VtMSwgbmV3U3VtOwoJdmFyIHNlbGVjdGVkID0gW107CgoJJC5lYWNoKHBhaXJzLCBmdW5jdGlvbihrLCB2KSB7CgkJc3VtMCA9IHN1bSArIHZbMF07CgkJc3VtMSA9IHN1bSArIHZbMV07CgkJCgkJdmFyIGkgPSBNYXRoLmFicyhzdW0xKSA+IE1hdGguYWJzKHN1bTApID8gMCA6IDE7CgoJCXNlbGVjdGVkLnB1c2goaSk7CgkJc3VtICs9IHZbaV07Cgl9KTsKCgl2YXIgY2hlY2tBZ2FpbiA9IGZhbHNlOwoJZG8gewoJCSQuZWFjaChwYWlycywgZnVuY3Rpb24oaywgdikgewoJCQl2YXIgc2VsZWN0ZWRLZXkgPSBzZWxlY3RlZFtrXTsKCQkJdmFyIG5vblNlbGVjdGVkS2V5ID0gc2VsZWN0ZWRba10gPT09IDEgPyAwIDogMTsKCQkJbmV3U3VtID0gc3VtIC0gdltzZWxlY3RlZEtleV0gKyB2W25vblNlbGVjdGVkS2V5XTsKCQkJCgkJCWlmIChuZXdTdW0gPiAwICYmIG5ld1N1bSA8IHN1bSkgewoJCQkJc3VtID0gbmV3U3VtOwoJCQkJc2VsZWN0ZWRba10gPSBub25TZWxlY3RlZEtleTsKCQkJCWNoZWNrQWdhaW4gPSB0cnVlOwoJCQkJY29uc29sZS5sb2coc3VtLCBzZWxlY3RlZCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9KTsgCQkKCX0gd2hpbGUgKGNoZWNrQWdhaW4pCgkKCWNvbnNvbGUubG9nKHN1bSwgc2VsZWN0ZWQpOwp9