Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Функция сортировки пузырьком с ускорением
- '''
- def Bubule_Sort(a: list):
- flag = True # Флаг, принимающий True, если выполнена хоть одна перестановка в массиве, иначе False - прекращаем сортировку
- i = 0
- j = 0
- while i < len(a) and flag:
- j = 0
- flag = False
- while j < len(a) - i - 1:
- if a[j] > a[j+1]:
- a[j+1],a[j] = a[j], a[j+1]
- flag = True
- j += 1
- i += 1
- '''
- Функция вставки элемента в отсортированный массив с помощью бинарного поиска
- '''
- def Input_Element(el: int, a: list):
- left = 0
- right = len(a)
- while left < right:
- mid = (left + right) // 2
- if el < a[mid]:
- right = mid
- else:
- left = mid + 1
- a.insert(left, el)
- '''
- Задача про Бендера
- file_name - имя входного файла
- Возвращает сумму, которую нужно заплатить Бендеру
- '''
- def task2(file_name: str):
- # Формируем массив целых чисел из строки файла
- f = open(file_name, 'r')
- st = f.readline()
- a = st.split(' ')
- i = 0
- while i < len(a):
- a[i] = int(a[i])
- i += 1
- Bubule_Sort(a) # Сортируем исходный массив
- summ = 0
- while len(a) > 1 : # Выполняем до тех пор, пока не получим конечную сумму
- currsumm = a.pop(0) + a.pop(0) # Получаем минимальную сумму и удаляем первые 2 элемента из массива
- summ += currsumm * 0.05 # Считаем сумму, которую нужно заплатить
- Input_Element(currsumm, a) # Вставляем новую сумму в отсортированный массив
Advertisement
Add Comment
Please, Sign In to add comment