# Ввод данных
N = int(input())
words_list = input().split()
M = int(input())
search_words = input().split()
# Создаем словарь для быстрого поиска индексов
words_dict = {word: index for index, word in enumerate(words_list)}
# Ищем индексы искомых слов
result_indices = [words_dict[word] for word in search_words]
# Выводим результаты
for index in result_indices:
print(index)
2 вариант с помощью бинарного поиска
def binary_search(arr, word):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == word:
return mid
elif arr[mid] < word:
left = mid + 1
else:
right = mid - 1
return -1
# Ввод данных
N = int(input())
words_list = input().split()
M = int(input())
search_words = input().split()
# Используем бинарный поиск для нахождения индексов слов
result_indices = [binary_search(words_list, word) for word in search_words]
# Выводим результаты
for index in result_indices:
print(index)
Дан упорядоченный список слов, отсортированный по возрастанию длин. Требуется найти индекс заданного слова в этом списке.
Формат входных данных
В первой строке содержится единственное число N (1 ≤ N ≤ 1000) – количество слов в списке.
В следующей строке через пробел находятся N слов, отсортированных по возрастанию длин. Суммарная длина всех слов не превышает 106.
В третьей строке записано число M (1 ≤ M ≤ 106)– количество слов, индексы которых необходимо найти в списке.
В последней строке содержатся через пробел M слов.
Формат выходных данных
Выведите M чисел — позиции соответствующих слов в списке.
Примечания
Гарантируется, что в списке нет слов одинаковой длины.
Гарантируется, что искомое слово существует в списке.
Входные данные:
6
a we you test table python
2
you test
Выходные данные:
2
3