Для начала предположим,что максимальное значение чисел в обеих массивах не велики, например не превосходят 10^5.Тогда задача становиться очевидной:
1.Считываем числа первого массива,при этом для каждого числа увеличиваем счётчик на 1 с помощью прямой адресации.
2.Когда считываем второй массив просто выводим значение счётчика для каждого числа из второго массива.
Свести данную задачу к только-что рассмотренной более простой задаче можно с помощью хэш-функции.
Определим хэш-функцию от числа x как hash(x)=(x1*p^0+x2*p^1+x3*p2..+xn*p^n-1) mod q, где x1..xn-цифры числа x,p-некоторое простое число,например 17,q-число которое "обрезает" максимальное значение хэш-функции,в данной задаче нам подходит 10^5.Также число q можно определить как максимальную возможную размерность массива,которую мы готовы выделить для задачи.
Итак теперь наш алгоритм существенно изменен:
1.Когда считываем элементы первой последовательности,то вычисляем его хэш-функцию.А дальше "клеим" связный список для чисел с одинаковым хэшем по следующему принципу:"бежим" по списку данного хэша,если мы встретили этот элемент,то просто увеличиваем счётчик данной позиции в списке,а иначе добавляем его в конец списка,а значение счётчика делаем равным единице.
2.Когда считываем второй массив,то вычисляем хэш его элемента,находим в связном списке позицию,на которой находиться этот элемент и выводим значение счётчика,или 0 если элемент с таким значением не был найден.
На практике такой алгоритм на много эффективней,чем большинство алгоритмов построенных на сортировке и поиске.
Надеюсь эта информация будет Вам полезна.
Дано два массива. Для каждого элемента второго массива определите, сколько раз он встречается в первом массиве.
Входные данные
Первая строка входных данных содержит одно число N (1 ≤ N ≤ 105) – количество элементов в первом массиве. Далее идет N целых чисел, не превосходящих по модулю 109 – элементы первого массива, Далее идет количество элементов M во втором массиве и M элементов второго массива с такими же ограничениями.
Выходные данные
Выведите M чисел: для каждого элемента второго массива выведите, сколько раз такое значение встречается в первом массиве.