Во всех задачах, если это не оговорено особо, размер вспомогательной памяти не должен зависеть от длин массивов, а число действий пропорционально длине массива (т.е. для x[1..n] это Cn |
1.
Найти для массива x[1..n] число различных элементов (Число действий Cn)
2.
Найти для x[1..n] и y[1..p] их пересечение, т.е. общие элементы с учетом кратности (Число действий Cn+p)
3.
Для x[1..n], y[1..p] и z[1..q], найти первый общий элемент
4. (cлияние)
Объединить x[1..n] и y[1..p] в z[1..n+p].
5.
Найти для x[1..n] и y[1..p] число различных элементов (Число действий Cn+p)
6.
Сумму вида x[i] + y[j] наиболее близкую к заданному числу a. (Число действий Cn+p; исходные массивы запрещено менять.)
7.
Для массива x[1..n] найти наименьшее натуральное a, непредставимое в виде суммы каких-либо его элементов.
8. (двоичный поиск)
В x[1..n] найти число заданное a. Количество действий порядка log n
9.
Дано n отрезков на прямой. Найти максимальное K (по всем точкам прямой) такое, что точка покрыта K слоями отрезков.
10.
Дано n точек на плоскости.
11*.
Построить (при тех же ограничениях) выпуклую оболочку для n точек на плоскости.
12.
Во входном файле записан набор больших латинских букв (не обязательно различных). Разрешается переставлять буквы, а также удалять некоторые буквы. Требуется написать программу, которая из данных букв по указанным правилам составит палиндром наибольшей длины, а если таких палиндромов несколько, то первый в алфавитном порядке.