На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время её шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортёра имеется N мест для каждой из N деталей. На ленте транспортёра детали располагают по следующему алгоритму:
— все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
— если минимальное число в этом упорядоченном списке — это время шлифовки конкретной детали, то деталь размещают на ленте транспортёра на первое свободное место от её начала;
— если минимальное число — это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортёра.
— из-за низкокачественных,безответственных сотрудников для каждой 5 детали определяется куда отправится деталь не по минимальному числу, а по максимальному.
— если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей. Определите номер последней детали, отправленной на покраску, для которой будет определено её место на ленте транспортёра, затем количество деталей, назначенных на отшлифовку, расположенных на второй половине ленты.
Входные данные:
В первой строке входного файла находится натуральное число N (N < 1000) – количество деталей. Следующие N строк содержат пары чисел, обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные, различные).
Запишите в ответе два натуральных числа через пробел: сначала номер последней детали, отправленной на покраску, для которой будет определено её место на ленте транспортёра, затем количество деталей, назначенных на отшлифовку, расположенных на второй половине ленты.
file = open(’26_4M__3whpp.txt’)
count_details = int(file.readline())
array_details = []
for i in range(count_details):
detail = list(map(int,file.readline().split()))
if (i + 1) % 5 == 0:#если номер детали кратен 5
if detail[0] > detail[1]:#определяем куда пойдет деталь по максимальному числу
array_details.append((detail[0],’grind’,i+1))
else:
array_details.append((detail[1], ’paint’, i + 1))
else:#в ином случае, определяем куда пойдет деталь по минимальному числу
if detail[0] > detail[1]:
array_details.append((detail[1],’paint’,i+1))
else:
array_details.append((detail[0],’grind’,i+1))
array_details.sort()
details = []
lenta = [0]*count_details
for detail in array_details:
if detail[1] == ’grind’:
for i in range(len(lenta)):
if lenta[i] == 0:
lenta[i] = detail
details.append(detail)
break
else:
for i in range(len(lenta)-1,-1,-1):
if lenta[i] == 0:
lenta[i] = detail
details.append(detail)
break
second_chapter = lenta[count_details//2:]
print([x[2] for x in details if x[1] == ’paint’][-1])
print(len([x for x in second_chapter if x[1] == ’grind’]))