Загадка о структуре данных

Я столкнулся с этой загадкойвопросом[ связанным со структурой данных] на соревнованиях по программированию.

Существует планета деревьев (настоящие деревья, а не древовидная структура данных!!). Там миллиарды или даже триллионы деревьев. Король приказывает найти средний возраст (в годах и целых числах) всех деревьев, используя, скажем, углеродный анализ. ( Метод не имеет значения. ) Примечание. Медиана — это «среднее число» в отсортированном списке чисел.

Ограничения:
1. Известно, что самому старому дереву 2000 лет.
2.У них есть единственная машина, которая может хранить целые числа в диапазоне от -бесконечности до +бесконечности.
3. Но количество таких целых чисел, которые могут храниться в памяти за раз, равно 1 миллиону.

Итак, как только вы сохраните 1 миллион целых чисел для хранения следующего, вы должны удалить уже сохраненное.
Так что каким-то образом они должны отслеживать медиану, продолжая считать возраст деревьев.
Как они могут это сделать?

Мой подход
Используйте вариант внешней сортировки для сортировки возрастов по частям и записи их в файл.
Примените k-way слияние [для фрагментов].
Проблема с описанным выше подходом заключается в том, что для этого требуется два сканирования файла.

Я могу придумать другой подход, который использует информацию Известно, что самому старому дереву 2000 лет.
Нельзя ли взять числовой массив[ так как диапазон возрастов дерева фиксирован]?

Я хочу знать, есть ли лучший подход?
Существует ли способ, при котором нам не нужно хранить данные в файле?[ где достаточно только оперативной памяти?]

8
задан Emil Vikström 24 June 2012 в 13:09
поделиться