$ideal_height = max(array_sum($arr) / 3, max($arr), min($arr));
rsort($arr); // сначала высокие
$heights = [0, 0, 0]; // высоты трёх групп
$last = 0;
for ($i = 0; $i < 3; $i ++) { // перебираем группы
for ($j = $last; $j < 10; $j ++) { // перебираем цилиндры
$last = $j; // последний перебранный цилиндр
$heights[$i] += $arr[$j]; // увеличиваем высоту группы
if ($heights[$i] >= $ideal_height) // достигли ИМВВ, идём в следующую группу
break;
}
}
// на выходе получаем массив высот трёх групп $heights
$max_height = max($heights); // общая высота групп
<div id="ya-site-results" onclick="return {'tld': 'ru','language': 'ru','encoding': '','htmlcss': '1.
x','updatehash': true}"></div>
<script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0];s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Results.init();})})(window,document,'yandex_site_callbacks');</script>