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],len([x for x in details[:-2] if x[1] == ’paint’]))
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий 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’]))
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий N деталей должны быть отшлифованы и окрашены. Для каждой детали известно время её шлифовки и время окрашивания. Детали пронумерованы начиная с единицы. Параллельная обработка деталей не предусмотрена. На ленте транспортёра имеется N мест для каждой из N деталей. Места для деталей пронумерованы начиная с единицы. На ленте транспортёра детали располагают по следующему алгоритму:
- все 2N чисел, обозначающих время окрашивания и шлифовки для N деталей, упорядочивают по возрастанию;
- если минимальное число в этом упорядоченном списке — это время шлифовки конкретной детали, то деталь размещают на ленте транспортёра на первое свободное место от её начала;
- если минимальное число — это время окрашивания, то деталь размещают на первое свободное место от конца ленты транспортёра;
Этот алгоритм применяется последовательно для размещения всех N деталей. Определите сколько деталей будет отшлифовано, и деталь с каким номером окажется на позиции с номером K на ленте транспортёра.
В первой строке входного файла находится натуральное число N (N < 1000) – количество деталей и натуральное число K (K N). Следующие N строк содержат пары чисел, обозначающих соответственно время шлифовки и время окрашивания конкретной детали (все числа натуральные, различные).
Запишите в ответе два натуральных числа через пробел: сначала сколько деталей будет отшлифовано, затем номер детали, которая окажется на позиции c номером K на ленте транспортёра.
file = open(’26_12933.txt’) count_detail, position = map(int,file.readline().split()) 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] = 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 print(len([x for x in details if x[1] == ’grind’]), lenta[position - 1])
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий 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(line_end[0][2]) print(len(line_end))
Ошибка.
Попробуйте повторить позже
На производстве штучных изделий 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() 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])