


Программирование Golang. помогите решить срочно!!!!
Задача для тех кто хорошо справляется с курсом.
После урока про сортировки Маша решила применить полученные знания с пользой.
У неё есть тетрадка, куда она записывает всех, кому за что-нибудь благодарна. Список может быть очень длинным, но Маша его упорядочила по алфавиту (это называется - лексикографический порядок).
Помогите ей организовать быстрый поиск по этому списку.
Формат ввода
На первой строке передается количество людей в списке - натуральное число. Затем на следующих строках идет список людей. А после списка - перечень префиксов всех тех, кого надо найти. Перечень префиксов может быть произвольной длины.
Формат вывода
Для каждого префикса необходимо вывести первую фамилию с таким префиксом, или фразу Не найдено.
если найдешь ответ можешь подсказать
Вот пример кода на языке программирования Golang для решения этой задачи:
package main
import (
"fmt"
"sort"
)
func main() {
var n int
fmt.Scan(&n)
people := make([]string, n)
for i := 0; i < n; i++ {
fmt.Scan(&people[i])
}
// Сортируем список людей по алфавиту
sort.Strings(people)
var m int
fmt.Scan(&m)
prefixes := make([]string, m)
for i := 0; i < m; i++ {
fmt.Scan(&prefixes[i])
// Ищем первую фамилию с заданным префиксом
index := sort.Search(len(people), func(j int) bool {
return people[j] >= prefixes[i]
})
// Проверяем, найдена ли фамилия с заданным префиксом
if index < len(people) && people[index][:len(prefixes[i])] == prefixes[i] {
fmt.Println(people[index])
} else {
fmt.Println("Не найдено")
}
}
}
Вы можете использовать этот код для решения задачи. Он сначала считывает список людей, сортирует его по алфавиту, а затем считывает префиксы и использует бинарный поиск ( sort.Search ) для поиска первой фамилии с заданным префиксом. Если фамилия найдена, она выводится, иначе выводится "Не найдено".