Эффективное запоминание индексов последовательности

Рейтинг: 0Ответов: 1Опубликовано: 27.04.2015

Со стандартного input-потока ситается последовательность, состоящая из очень большого количества чисел, которые, в свою очередь, являются целыми и могут принимать значения из диапазона [0, MAX_INT). Задача состоит в том, чтобы в этой последовательности отыскать наикратчайшее (с наименьшим кол-вом элементов) подмножество, сумма элементов которого максимальна и нечётна. Подмножество не обязательно должно быть отрезком из целевого, т.е может быть и "рваным".

Собственно, проблема состоит в том, как можно наиболее эффективно получить индексы элементов этого самого подмножества в целевом и в порядке возрастания? Элементы при этом сохранять где-либо внутри программы не следует. Буду очень благодарен за любые идеи! При анализе помните о "числовой объемности" целевого множества!

Краткий пример для наглядности:

последовательность:  [1]->0 [2]->13 [3]->202
результат         :  2 3

Ответы

▲ 2

Из набора неотрицательных целых чисел выбрать поднабор с наибольшей возможной нечётной суммой, среди равных выбрать наикратчайший?

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