Легенда

В жилом доме построена инновационная система энергопотребления, где все квартиры соединены в общую энергосеть и могут обмениваться электроэнергией (купленной, полученной с солнечных батарей, накопленной в энергонакопителе, и т.п.) таким образом, что каждая квартира получает необходимое энергоснабжение. Даже в том случае, когда какой-то квартире энергии не хватает, всегда можно взять энергию из внешней энергосистемы.
Пусть каждая квартира имеет на данный момент излишек или недостаток энергии.
Если у квартиры излишек электроэнергии, то она раздаёт энергию соседям в определённом владельцами квартиры соотношении, выражаемом максимальной долей излишка, которую квартира может передать каждому из соседей. Даже если кто-то из соседей не может принять переданный им излишек (им уже хватает энергии), то он всё равно не перераспределяется.
Если у квартиры недостаток электроэнергии, то она берёт энергию из выделенных её соседями долей, но в пределах, ограниченных соседями, таковы технические ограничения. Если энергии соседей тоже недостаточно, она берёт энергию из внешней энергосети.
По заданным излишкам и недостаткам, а также настройкам соотношений необходимо определить, сколько энергии придётся докупить с внешней сети, чтобы дорогие соседи смогли дальше пить чай и смотреть новости.

На вход передаётся два массива. В первом находятся текущие избытки или недостатки энергии у каждого из соседей. Во втором — установленные доли излишков, передаваемых соседям. Если этот массив назвать foo, то foo[3][4] == 0.5 означает, что сосед в квартире номер 3 передаст соседу в квартире номер 4 не больше половины своего избытка энергии (даже если остальной избыток передать будет некому).
Сумма значений по первому индексу массива всегда равна 1. Размеры массивов согласованы: если первый имеет размер 100, то второй — 100 на 100. Число квартир находится в диапазоне от 50 до 150.

Видео-разбор


Последнее изменение: Monday, 8 February 2021, 08:44