Дорога назад
Делим объём на количество кодов — получаем байты на один код. Дробную часть отбрасываем: байт целый.
Умножаем на 8, делим на биты одного символа — вот длина.
Наибольшее — вниз, наименьшее — вверх. «Отведено не более» просит максимум, «потребовалось более» — минимум.
Проверь соседа. Нашёл максимум — убедись, что следующая длина уже не помещается. Две строки арифметики, спасённый балл.