Для решения задачи необходимо реализовать алгоритм перестановки номеров вопросов в соответствии с правилами, заданными профессором.
Алгоритм:
new_list
) для хранения перестановки номеров вопросов.old_list[0]
) добавляем в new_list
.i
от 1 до N-1
) в new_list
:min_distance
) от каждого оставшегося номера в old_list
до всех номеров, уже выбранных в new_list
.old_list
.new_list
.Пример реализации на Python:
def solve(): n = int(input()) old_list = list(map(int, input().split())) new_list = [old_list[0]] remaining = old_list[1:] for _ in range(n - 1): max_min_distance = -1 best_index = -1 for i in range(len(remaining)): min_distance = float('inf') for selected in new_list: distance = abs(remaining[i] - selected) min_distance = min(min_distance, distance) if min_distance > max_min_distance: max_min_distance = min_distance best_index = i elif min_distance == max_min_distance: if old_list.index(remaining[i]) < old_list.index(remaining[best_index]): best_index = i new_list.append(remaining[best_index]) remaining.pop(best_index) print(*new_list) solve()
Разъяснения к коду:
new_list
первым элементом old_list
и remaining
остальными элементами.old_list
.new_list
.Для примера из условия:
Входные данные:
7 4 2 6 1 3 5 7
Выходные данные:
4 1 7 2 6 3 5