26.07 Детали на конвейерной ленте
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время её шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортёра имеется N мест для каждой из N деталей. На ленте транспортёра детали располагают по следующему алгоритму:
— все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
— если минимальное число в этом упорядоченном списке — это время шлифовки конкретной детали, то деталь размещают на ленте транспортёра на первое свободное место от её начала;
— если минимальное число — это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортёра.
— если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей. Определите номер предпоследней детали, для которой будет определено её место на ленте транспортёра, и количество деталей, которые будут покрашены до неё.
Входные данные:
В первой строке входного файла находится натуральное число N (N < 1000) – количество деталей. Следующие N строк содержат пары чисел, обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные, различные).
Запишите в ответе два натуральных числа через пробел: сначала номер предпоследней детали, для которой будет определено её место на ленте транспортёра, затем количество деталей, которые будут покрашены до нее.
file = open(’26_9793.txt’) count_details = int(file.readline()) array_details = []#список, в котором у нас будут все детали файла for i in range(count_details): detail = list(map(int,file.readline().split())) 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() lenta = [0]*count_details#симулируем ленту транспортёра details = []#список, в котором у нас будут детали, которые мы положили на ленту for detail in array_details:#проход по всевозможным деталям файла if detail[1] == ’grind’:#если эту деталь нужно отправить на шлифовку for i in range(len(lenta)):#то делаем перебор с начала ленты if lenta[i] == 0:#если эта ячейка свободна lenta[i] = 1#указываем, что она занята details.append(detail) break#сброс цикла для того, чтобы перейти к следующей детали else:#в ином случае for i in range(len(lenta)-1,-1,-1):#перебор с конца ленты if lenta[i] == 0:#если эта ячейка свободна lenta[i] = 1#указываем, что она занята details.append(detail) break#сброс цикла для того, чтобы перейти к следующей детали #выводим номер, предпоследней детали, а также количество покрашенных деталей до этой детали print(details[-2][2]) # так как последняя деталь будет центральной на ленте # то до нее не будет покрашено ни одной детали
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время её шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортёра имеется N мест для каждой из N деталей. На ленте транспортёра детали располагают по следующему алгоритму:
— все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
— если минимальное число в этом упорядоченном списке — это время шлифовки конкретной детали, то деталь размещают на ленте транспортёра на первое свободное место от её начала;
— если минимальное число — это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортёра.
- из-за низкокачественных,безответственных сотрудников для каждой 5 детали определяется куда отправится деталь не по минимальному числу, а по максимальному.
— если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей. Определите номер последней детали, отправленной на покраску, для которой будет определено её место на ленте транспортёра, затем количество деталей, назначенных на отшлифовку, расположенных на второй половине ленты.
Входные данные:
В первой строке входного файла находится натуральное число N (N < 1000) – количество деталей. Следующие N строк содержат пары чисел, обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные, различные).
Запишите в ответе два натуральных числа через пробел: сначала номер последней детали, отправленной на покраску, для которой будет определено её место на ленте транспортёра, затем количество деталей, назначенных на отшлифовку, расположенных на второй половине ленты.
f = open(’26_4M__3whpp.txt’) n = int(f.readline()) line_start = [] # Список деталей в начале ленты для шлифовки line_end = [] # Список деталей в конце ленты для окраски c = 0 # Номер детали for i in f: c += 1 # Увеличиваем номер детали t1, t2 = map(int, i.split()) # Время шлифовки и время окрашивания if c % 5 != 0: #если номер детали не кратен 5 if t1 < t2: #определяем куда пойдет деталь по минимальному числу line_start.append([t1, c]) else: line_end.append([t2, c]) else: #в ином случае, определяем куда пойдет деталь по максимальному числу if t1 > t2: line_start.append([t1, c]) else: line_end.append([t2, c]) line_start.sort() # Сортируем список шлифовки по возрастанию line_end.sort(reverse=True) # Сортируем список окрашивания по убыванию print(line_end[0][1]) print(len(line_start) - (len(line_start + line_end) // 2))
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время её шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортёра имеется N мест для каждой из N деталей. Места для деталей пронумерованы начиная с единицы. На ленте транспортёра детали располагают по следующему алгоритму:
- все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
- если минимальное число в этом упорядоченном списке — это время шлифовки конкретной детали, то деталь размещают на ленте транспортёра на первое свободное место от её начала;
- если минимальное число — это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортёра;
Этот алгоритм применяется последовательно для размещения всех N деталей. Определите сколько деталей будет отшлифовано, и деталь с каким номером окажется на позиции с номером K на ленте транспортёра.
В первой строке входного файла находится натуральное число N (N < 1000) – количество деталей и натуральное
число K (K N). Следующие N строк содержат пары чисел, обозначающих соответственно время шлифовки и время
окрашивания конкретной детали (все числа натуральные, различные).
Запишите в ответе два натуральных числа через пробел: сначала сколько деталей будет отшлифовано, затем номер детали, которая окажется на позиции c номером K на ленте транспортёра.
file = open(’26_12933.txt’) # Kоличество деталей и номер позиции n, k = map(int, f.readline().split()) line_start = [] # Список деталей в начале ленты для шлифовки line_end = [] # Список деталей в конце ленты для окраски c = 0 # Номер детали for i in f: c += 1 # Увеличиваем номер детали t1, t2 = map(int, i.split()) # Время шлифовки и время окрашивания if t1 < t2: # Если время шлифовки меньше времени окрашивания line_start.append([t1, c]) # Добавляем деталь в начало ленты else: # Если время окрашивания не больше времени шлифовки line_end.append([t2, c]) # Добавляем деталь в конец ленты line_start.sort() # Сортируем список шлифовки по возрастанию line_end.sort(reverse=True) # Сортируем список окрашивания по убыванию res = line_start + line_end # Объединяем списки # Количество отшлифованных деталей print(len(line_start)) print(res[k-1][1]) # Номер детали на позиции c номером K на ленте
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время её шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортёра имеется N мест для каждой из N деталей. Места для деталей пронумерованы начиная с единицы. На ленте транспортёра детали располагают по следующему алгоритму:
- все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
- если минимальное число в этом упорядоченном списке — это время шлифовки конкретной детали, то деталь размещают на ленте транспортёра на первое свободное место от её начала;
- если минимальное число — это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортёра;
Этот алгоритм применяется последовательно для размещения всех N деталей. Определите сколько деталей будет отшлифовано, и деталь с каким номером окажется на позиции с номером K на ленте транспортёра.
В первой строке входного файла находится натуральное число N (N < 1000) – количество деталей и натуральное
число K (K N). Следующие N строк содержат пары чисел, обозначающих соответственно время шлифовки и время
окрашивания конкретной детали (все числа натуральные, различные).
Запишите в ответе два натуральных числа через пробел: сначала абсолютную разность между количеством деталей, которые отшлифовали и количеством деталей, которые покрасили, расположенных на ленте, затем номер детали, которая окажется на позиции c номером K на ленте транспортёра.
file = open(’26_3M.txt’) count_detail,position = map(int,file.readline().split()) array_details = [] for i in range(count_detail): detail = list(map(int,file.readline().split())) 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_detail for detail in array_details: if detail[1] == ’grind’: for i in range(len(lenta)): if lenta[i] == 0: lenta[i] = detail[2] details.append(detail) break else: for i in range(len(lenta)-1,-1,-1): if lenta[i] == 0: lenta[i] = detail[2] details.append(detail) break count_grind = len([x for x in details if x[1] == ’grind’]) count_paint = len([x for x in details if x[1] == ’paint’]) print(abs(count_grind-count_paint),lenta[position - 1])
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время ее шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортера имеется N мест для каждой из N деталей. На ленте транспортера детали располагают по следующему алгоритму:
– все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
– если минимальное число в этом упорядоченном списке – это время шлифовки конкретной детали, то деталь размещают на ленте транспортера на первое свободное место от ее начала;
– если минимальное число – это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортера;
– если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей.
Определите сколько деталей будет отшлифовано и какой номер будет иметь деталь, которая была размещена на ленте последней.
Входные данные представлены в файле 26-1.txt следующим образом. Первая строка входного файла содержит
натуральное число N – количество деталей. Следующие N строк содержат пары чисел,
обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные,
различные).
Запишите в ответе два натуральных числа через пробел: сначала количество деталей, которые будут отшлифованы, затем номер последней размещенной детали.
file = open(’26_1.txt’) count_detail = int(file.readline()) array_detail = [] for i in range(count_detail): detail = list(map(int,file.readline().split())) if detail[0] > detail[1]: array_detail.append((detail[1],’paint’,i+1)) else: array_detail.append((detail[0], ’grind’, i + 1)) array_detail.sort() details = [] lenta = [0]*count_detail for detail in array_detail: if detail[1] == ’grind’: for i in range(len(lenta)): if lenta[i] == 0: lenta[i] = 1 details.append(detail) break else: for i in range(len(lenta)-1,-1,-1): if lenta[i] == 0: lenta[i] = 1 details.append(detail) break print(len([x for x in details if x[1] == ’grind’]),details[-1][2])
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время ее шлифовки и время окрашивания. Детали пронумерованы начиная с нуля. Параллельная обработка деталей не предусмотрена. На ленте транспортера имеется N мест для каждой из N деталей. На ленте транспортера детали располагают по следующему алгоритму:
– все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
– если максимальное число в этом упорядоченном списке – это время шлифовки конкретной детали, то деталь размещают на ленте транспортера на первое свободное место от ее начала;
– если максимальное число – это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортера;
– если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей.
Определите сколько деталей будет окрашено и какой номер будет иметь последней окрашенная деталь.
Входные данные представлены в файле 26-2.txt следующим образом. Первая строка входного файла содержит
натуральное число N – количество деталей. Следующие N строк содержат пары чисел,
обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные,
различные).
Запишите в ответе два натуральных числа через пробел: сначала количество деталей, которые будут окрашены, затем номер последней окрашенной детали.
f = open(’26_2.txt’) n = int(f.readline()) a = [list(map(int,i.split())) for i in f] t = [] #список для хранения времени, типа операции и номера на ленте для каждой детали for i in range(n): if a[i][0] > a[i][1]: t.append([a[i][0], 1, i]) else: t.append([a[i][1], 2, i]) t.sort() line_start = [] #списки для хранения деталей, которые размещаются в начале line_end = [] #списки для хранения деталей, которые размещаются в конце for i in t: #заполнение списков в зависимости от типа операции if i[1] == 1: line_start.append(i) else: line_end.append(i) print(len(line_end)) print(line_end[-1][2])
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время ее шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортера имеется N мест для каждой из N деталей. На ленте транспортера детали располагают по следующему алгоритму:
– все 2N чисел, обозначающих время шлифовки и окрашивания для N деталей, упорядочивают по возрастанию;
– если максимальное число в этом упорядоченном списке – это время шлифовки конкретной детали, то деталь размещают на ленте транспортера на первое свободное место от ее начала;
– если максимальное число – это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортера;
– если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей.
Определите время обработки детали, которая в итоге будет стоять на ленте транспортера на 168 месте, а также суммарное время окрашивания деталей.
Входные данные представлены в файле 26-3.txt следующим образом. Первая строка входного файла содержит
натуральное число N – количество деталей. Следующие N строк содержат пары чисел,
обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные,
различные).
Запишите в ответе два натуральных числа через пробел: сначала время обработки детали, которая в итоге будет стоять на ленте транспортера на 168 месте, а затем суммарное время окрашивания деталей.
f = open(’26_3__3whrj.txt’) n = int(f.readline()) a = [list(map(int, i.split())) for i in f] t = [] # список для хранения времени, типа операции и номера на ленте для каждой детали for i in range(n): if a[i][0] > a[i][1]: t.append([a[i][0], 1, i + 1]) else: t.append([a[i][1], 2, i + 1]) t.sort(reverse=True) lenta = [] line_start = [] # списки для хранения деталей, которые размещаются в начале line_end = [] # списки для хранения деталей, которые размещаются в конце for i in t: # заполнение списков в зависимости от типа операции if i[1] == 1: line_start.append(i) else: line_end.append(i) lenta = line_start + line_end[::-1] print(lenta[167][0], sum(x[0] for x in line_end))
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время ее шлифовки и время окрашивания. Детали пронумерованы начиная с нуля. Параллельная обработка деталей не предусмотрена. На ленте транспортера имеется N мест для каждой из N деталей. На ленте транспортера детали располагают по следующему алгоритму:
– все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
– если максимальное число в этом упорядоченном списке – это время окрашивания конкретной детали, то деталь размещают на ленте транспортера на первое свободное место от ее начала;
– если максимальное число – это время шлифовки, то деталь размещают на первое свободное место от конца ленты транспортера;
– если число обозначает время окрашивания или шлифовки уже рассмотренной детали, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N деталей.
Определите сколько деталей будет окрашено и какой номер будет иметь последняя отшлифованная деталь.
Входные данные представлены в файле 26_12.txt следующим образом. Первая строка входного файла содержит
натуральное число N – количество деталей. Следующие N строк содержат пары чисел,
обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные,
различные).
Запишите в ответе два натуральных числа через пробел: сначала количество деталей, которые будут окрашены, затем номер последней отшлифованной детали.
f = open(’26_12.txt’) n = int(f.readline()) a = [list(map(int,i.split())) for i in f] t = [] #список для хранения времени, типа операции и порядкового номера каждой детали for i in range(n): if a[i][0] > a[i][1]: t.append([a[i][0], 1, i]) #шлифовка else: t.append([a[i][1], 2, i]) #окрашивание t.sort() line_start = [] #списки для хранения деталей, которые размещаются в начале line_end = [] #списки для хранения деталей, которые размещаются в конце for i in t: #заполнение списков в зависимости от типа операции if i[1] == 2: line_start.append(i) else: line_end.append(i) print(len(line_start)) print(line_end[-1][2])