<?php
//Дан массив пар числел, например ((0.08, -0.12), (0.07, -0.13), (0.03, -0.7), (0.14, -0.2)).
//Надо из каждой пары выбрать одно число так, чтобы сумма всех выбранных чисел была минимальной не отрицательной.
[0.08, -0.12],
[0.07, -0.13],
[0.03, -0.7],
[0.14, -0.2],
//[0.11, 0.1],
//[-0.05, -0.08],
//[-0.1, -0.02]
);
$iterations = pow(2, $log);
$results = [];
for ($i = 0; $i < $iterations; $i++) {
$map = str_pad($map, $log, "0", STR_PAD_LEFT
);
$map = preg_split('//u', $map, null, PREG_SPLIT_NO_EMPTY
);
$result = 0;
$resultString = '';
for ($j = 0; $j < $log; $j++) {
$addr = $map[$j];
$addedNum = $input[$j][$addr];
$result += intval($addedNum * 1000); $resultString .= $addedNum . " ";
}
if ($result > 0) {
$results["$resultString"] = $result/1000;
}
}
$return = [];
foreach ($results as $name => $value) {
if (abs(($value-$min)/$min) < 0.00001) { $return[$name] = $value;
}
}
PD9waHAKLy/QlNCw0L0g0LzQsNGB0YHQuNCyINC/0LDRgCDRh9C40YHQu9C10LssINC90LDQv9GA0LjQvNC10YAgKCgwLjA4LCAtMC4xMiksICgwLjA3LCAtMC4xMyksICgwLjAzLCAtMC43KSwgKDAuMTQsIC0wLjIpKS4gCi8v0J3QsNC00L4g0LjQtyDQutCw0LbQtNC+0Lkg0L/QsNGA0Ysg0LLRi9Cx0YDQsNGC0Ywg0L7QtNC90L4g0YfQuNGB0LvQviDRgtCw0LosINGH0YLQvtCx0Ysg0YHRg9C80LzQsCDQstGB0LXRhSDQstGL0LHRgNCw0L3QvdGL0YUg0YfQuNGB0LXQuyDQsdGL0LvQsCDQvNC40L3QuNC80LDQu9GM0L3QvtC5INC90LUg0L7RgtGA0LjRhtCw0YLQtdC70YzQvdC+0LkuCgokaW5wdXQgPSBhcnJheSgKCVswLjA4LCAtMC4xMl0sCglbMC4wNywgLTAuMTNdLAoJWzAuMDMsIC0wLjddLAoJWzAuMTQsIC0wLjJdLAoJLy9bMC4xMSwgMC4xXSwKCS8vWy0wLjA1LCAtMC4wOF0sCgkvL1stMC4xLCAtMC4wMl0KKTsKCiRsb2cgPSBjb3VudCgkaW5wdXQpOwokaXRlcmF0aW9ucyA9IHBvdygyLCAkbG9nKTsKCiRyZXN1bHRzID0gW107Cgpmb3IgKCRpID0gMDsgJGkgPCAkaXRlcmF0aW9uczsgJGkrKykgewoKCSRtYXAgPSBkZWNiaW4oJGkpOwoKCSRtYXAgPSBzdHJfcGFkKCRtYXAsICRsb2csICIwIiwgU1RSX1BBRF9MRUZUKTsKCgkkbWFwID0gcHJlZ19zcGxpdCgnLy91JywgJG1hcCwgbnVsbCwgUFJFR19TUExJVF9OT19FTVBUWSk7CgoJCgoJJHJlc3VsdCA9IDA7CgkkcmVzdWx0U3RyaW5nID0gJyc7CgoJZm9yICgkaiA9IDA7ICRqIDwgJGxvZzsgJGorKykgewoKCQkkYWRkciA9ICRtYXBbJGpdOwoJCSRhZGRlZE51bSA9ICRpbnB1dFskal1bJGFkZHJdOwoJCSRyZXN1bHQgKz0gaW50dmFsKCRhZGRlZE51bSAqIDEwMDApOwoJCSRyZXN1bHRTdHJpbmcgLj0gJGFkZGVkTnVtIC4gIiAiOwoJfQoKCWlmICgkcmVzdWx0ID4gMCkgewoJCSRyZXN1bHRzWyIkcmVzdWx0U3RyaW5nIl0gPSAkcmVzdWx0LzEwMDA7Cgl9IAoKfQoKYXJzb3J0KCRyZXN1bHRzKTsKCiRyZXR1cm4gPSBbXTsKJG1pbiA9IG1pbigkcmVzdWx0cyk7Cgpmb3JlYWNoICgkcmVzdWx0cyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKCQoJaWYgKGFicygoJHZhbHVlLSRtaW4pLyRtaW4pIDwgMC4wMDAwMSkgewoJCSRyZXR1cm5bJG5hbWVdID0gJHZhbHVlOwoJfQp9Cgp2YXJfZHVtcCgkcmV0dXJuKTs=