Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- V, K, N = input().split() # Объем диска Кол-во дисков и Кол-во архивов
- V, K, N = int(V), int(K), int(N)
- archives = []
- for i in range(N):
- archives.append(int(input()))
- archives.sort(reverse=True) # будем раскидываем файлы - архивы начиная с больших (по усл.)
- local_folder = [] # для файлов, кот. не умещаются ни на один диск
- discs_volume = [0] * K # Заполненность всех K дисков. Изначально пустые
- current_disk_to_write = 0 # начинаем записывать с нулевого диска
- for f in archives: # Перебор файлов
- flag_file_saved_to_disk = 0
- for i in range(K): # перебор дисков
- try_index = (current_disk_to_write + i) % K # Ходим по кругу по K дискам
- print(discs_volume)
- if discs_volume[try_index] + f < V:
- discs_volume[try_index] += f # Если файл залазит то записываем его туда
- print(f'file with size {f} was saved to disk {try_index}')
- current_disk_to_write = (current_disk_to_write + 1) % K # Следующий файл будем записывать на следующий диск
- flag_file_saved_to_disk = 1
- break # и идем к следующему файлу
- if not (flag_file_saved_to_disk):
- local_folder.append(f) # Файл не поместился никуда. Записываем в локальную папку
- print(f'file {f} could not write to any disk. Saving to local folder: {local_folder}')
- print(sum(local_folder), len(local_folder)) # 200274 563
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement