| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Бинарный поиск. |
| Автор: ferq 9.1.2006, 22:04 |
| Даны две последовательности A1, A2,..., AN и B1, B2, ..., BM. Ваша задача вывести все общие элементы этих последовательностей в возрастающем порядке. Входные данные В первой строке входного файла записаны числа N и M (1 <= N <= 10^3, 1 <= M <= 10^5). Во второй строке записано N чисел, элементы последовательности A. В третьей строке записаны элементы последовательности B (M чисел). Элементы последовательностей разделяются пробелами, гарантируется, что они не превосходят 10^6 по абсолютной величине. Выходные данные В первой строке выходного файла выведите число K -- количество различных общих элементов в этих двух последовательностях. Во второй строке выведите K различных общих элементов в возрастающем порядке. Пример Ввод 6 8 1 2 5 2 7 3 9 3 4 2 2 1 9 7 Вывод 4 1 2 3 7 Нужен код на pascale или хоть намекните как решать. |
| Автор: Fin 10.1.2006, 01:23 | ||
| Я бы эту задачу чуть по другому решал бы. Ну раз бинарный поиск. Я написал маленький пример на С++. Извини на паскале уже давно не писал. Первое что нужно делать, это отсортировать массив A по возрастаюшей. Да кстати ни в коем случае не используй пузырек для этого. 10^3 ээлементов это довольно много для него уже. Я написал в обших чертах, чтобы понять. Все красивости делай сам. Прочитать подробно про этот алгоритм Д.Кнут "Исскуство программирования" том 3. начиная с 442 страници.
|
| Автор: podval 10.1.2006, 09:47 |
| Модератор: Тема перемещена из раздела "Алгоритмы" |