2022 [8-10] Blockchain

Существует система хранения документов, построенная на основе связного списка блоков (блокчейн). Блоки состоят из набора транзакций и информации о предыдущем блоке цепочки. Каждая транзакция описывает добавляемый в систему один или несколько документов и содержит следующую информацию в формате JSON:
– номер транзакции (_id),
– автор документа (from),
– адресаты документов (to),
– объемы документов (value).
Размер транзакции определяется суммарным количеством авторов и адресатов документов, входящих в её состав. 
Например, транзакция 11, описывающая документ автора ‘user01’ для ‘user02’ объемом 15 страниц
{
_id: 11,
from: "user01",
to: [ "user02" ],
value: [ 15 ]
}
имеет размер, равный двум.
Транзакция 12, описывающая два документа автора ‘user01’: один для ‘user02’ объемом 15 страниц, второй – для ‘user03’ объемом 10 страниц
{
_id: 12,
from: "user01",
to: [ "user02", "user03" ],
value: [ 15, 10 ]
}
имеет размер, равный трем.
Блок, сформированный на основе транзакций 11 и 12 будет иметь размер, равный 2 + 3 = 5, и суммарный объем документов, равный 15 + 15 +10 = 40.
Все незафиксированные транзакции хранятся в специальном хранилище, откуда их можно взять и добавить в новый блок. В один блок нельзя добавить транзакции с одинаковыми идентификаторами (_id). Также у блока есть ограничение на максимальный суммарный размер всех входящих в него транзакций – S = 15. 

Сформируйте новый блок для добавления в блокчейн из числа незафиксированных транзакций так, чтобы общий объем документов, входящих в его транзакции, был максимальным. В ответе укажите перечень транзакций, входящих в блок, а также общий объем документов из выбранных транзакций.

К задаче прилагается: 
storage_v1.json – содержимое хранилища незафиксированных транзакций в формате JSON.


Показать подсказку

Показать решение

Показать ответ




<< Назад в раздел (Все задания)

Ваше сообщение получено!