<?php
//Дан массив пар числел, например ((0.08, -0.12), (0.07, -0.13), (0.03, -0.7), (0.14, -0.2)). 
//Надо из каждой пары выбрать одно число так, чтобы сумма всех выбранных чисел была минимальной не отрицательной.

$input = array(
	[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]
);

$log = count($input);
$iterations = pow(2, $log);

$results = [];

for ($i = 0; $i < $iterations; $i++) {

	$map = decbin($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;
	} 

}

arsort($results);

$return = [];
$min = min($results);

foreach ($results as $name => $value) {
	
	if (abs(($value-$min)/$min) < 0.00001) {
		$return[$name] = $value;
	}
}

var_dump($return);