Поиск по этому блогу

воскресенье, 16 июня 2019 г.

Цифровой колокол

Требуется написать программу, которая в массиве из n целых чисел наименьший элемент поместит на первое место, наименьший из оставшихся – на последнее, следующий по величине – на второе место, следующий – на предпоследнее и так далее – до середины массива.
Входные данные
Во входном файле INPUT.TXT записано в первой строке число n (1 ≤ n ≤ 30000). Во второй строке записаны через пробел элементы массива, числа по абсолютной величине не большие 32767.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести элементы полученного массива, разделенные одним пробелом.

Пример
INPUT.TXT
OUTPUT.TXT
1
5
1 2 3 4 5

1 3 5 4 2

Решение
Идея решения заключается в следующем: считанные дынные сортируются. Затем отсортированный список делится на два списка, в первый элементы , стоящие на нечетных места, во-второй - стоящие на нечетных местах. В о втором списке элементы переставляются в обратном порядке. Списки склеиваются. Задача решена.

f = open("input.txt","r") # открываем файл для чтения данных
n = int(f.readline()) # читаем количество чисел
a=[0]*n # резервируем место
a=f.readline().split() # чтение из файла данных строки, разделенных пробелами
a=[int(i) for i in a] # перевод текстовых данных в числа
a=sorted(a) # сортировка полученного списка чисел
b=[a[i] for i in range(n) if i%2==0] # формируем список их элементов, стоящих на нечетных местах
c=[a[i] for i in range(n) if i%2!=0] # формируем список их элементов, стоящих на четных местах
c.reverse() # переставляем числа в обратном порядке
a=b+c # склеиваем два с писка в один
f.close() # закрываем файл для чтения
s="" # инициализируем пустую строку
f1=open("output.txt","w") # открываем файл для записи
for i in a:
s=s+str(i)+" "
# формируем строку вывода
f1.write(s[:-1]) # выводим в файл
f1.close() # закрываем файл вывода




Комментариев нет:

Отправить комментарий