Advertisement
HuanMatus

Untitled

Dec 16th, 2021
1,316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.74 KB | None | 0 0
  1. V, K, N = input().split()  # Объем диска Кол-во дисков и Кол-во архивов
  2. V, K, N = int(V), int(K), int(N)
  3. archives = []
  4. for i in range(N):
  5.     archives.append(int(input()))
  6. archives.sort(reverse=True)  # будем раскидываем файлы - архивы начиная с  больших (по усл.)
  7. local_folder = []  # для файлов, кот. не умещаются ни на один диск
  8. discs_volume = [0] * K  # Заполненность всех K дисков. Изначально пустые
  9.  
  10. current_disk_to_write = 0  # начинаем записывать с нулевого диска
  11. for f in archives:  # Перебор файлов
  12.  
  13.     flag_file_saved_to_disk = 0
  14.     for i in range(K):  # перебор дисков
  15.         try_index = (current_disk_to_write + i) % K  # Ходим по кругу по K дискам
  16.         print(discs_volume)
  17.         if discs_volume[try_index] + f < V:
  18.             discs_volume[try_index] += f  # Если файл залазит то записываем его туда
  19.             print(f'file with size {f} was saved to disk {try_index}')
  20.             current_disk_to_write = (current_disk_to_write + 1) % K  # Следующий файл будем записывать на следующий диск
  21.             flag_file_saved_to_disk = 1
  22.             break  # и идем к следующему файлу
  23.     if not (flag_file_saved_to_disk):
  24.         local_folder.append(f)  # Файл не поместился никуда. Записываем в локальную папку
  25.         print(f'file {f} could not write to any disk. Saving to local folder: {local_folder}')
  26.  
  27. print(sum(local_folder), len(local_folder))  # 200274 563
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement