Здравствуйте, scf, Вы писали:
scf>Коллекция, всегда содержит n [2..20] значений и поддерживает две операции: scf>1. прочитать минимальный элемент и остальные элементы, ему равные, без модификации коллекции. Например (1, 2, 3, 2, 1, 1) -> (1, 1, 1) scf>2. заменить элементы из п.1 на новые
Зачем двойная? Обычная куча, одинаковые элементы хранятся в виде списка. Чтение и модификация за O(log(N)), чтения одинаковых элементов за O(M). С трудом верится, что можно сделать быстрее. Кстати, если значений всего 20, то есть вероятность, что полный перебор, сможет быть быстрее из-за локальности данных и loop unrolling (если речь об x86-64).