Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей на python пожалуйста

Мария Никитина Ученик (153), на голосовании 5 месяцев назад
Условие
Дан упорядоченный список слов, отсортированный по возрастанию длин. Требуется найти индекс заданного слова в этом списке.
Формат входных данных
В первой строке содержится единственное число N (1 ≤ N ≤ 1000) – количество слов в списке.

В следующей строке через пробел находятся N слов, отсортированных по возрастанию длин. Суммарная длина всех слов не превышает 106.

В третьей строке записано число M (1 ≤ M ≤ 106)– количество слов, индексы которых необходимо найти в списке.

В последней строке содержатся через пробел M слов.

Формат выходных данных
Выведите M чисел — позиции соответствующих слов в списке.

Примечания
Гарантируется, что в списке нет слов одинаковой длины.

Гарантируется, что искомое слово существует в списке.

Входные данные:

6
a we you test table python
2
you test

Выходные данные:

2
3
Голосование за лучший ответ
Татьяна Просветленный (36384) 6 месяцев назад
 # Ввод данных 
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)
Мария НикитинаУченик (153) 6 месяцев назад
извините, можете написать с помощью бинарного поиска?
Татьяна Просветленный (36384) Мария Никитина, и 2 вариант добавила к твоему ответу
Александр Искусственный Интеллект (301742) 6 месяцев назад
попробуйте задать вопрос в разделе по питону
Похожие вопросы