zhukov000

26 example

Feb 7th, 2022
934
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. with open("26-71.txt") as file:
  2.   n, s = map(int, file.readline().split())
  3.   a = []
  4.   for row in file:
  5.     t, v = map(int, row.split())
  6.     a.append( (t, v) ) # tuple(t, v)
  7.  
  8. a.sort()
  9. # a[i][0] - тип, a[i][1] - вес
  10.  
  11. """
  12.  Идея:
  13.  Проходим по парам и для всех товаров одного типа считаем количество,
  14.  которое поместится (<= s) и сумма оставшихся
  15. """
  16. types = set()
  17. for i in range(len(a)):
  18.   t, v = a[i]
  19.   types.add(t) # добавить в set
  20.  
  21. total_k = 0 # сколько всего товаров остается на складе
  22. mx_k = 0    # максимальное количество товаров одного типа, которое остается
  23. code = 0    # тип товара с максимальным количеством
  24. # для каждого типа найти количество, которое берем и сумму оставшихся
  25. for j in types:
  26.   sum_t = 0 # сумма товаров типа t, которые можем взять (<=s)
  27.   k_t = 0   # количество товаров типа t, которые не можем взять
  28.   for i in range(len(a)):
  29.     t, v = a[i]
  30.     if t == j: # только товары типа j
  31.       if sum_t + v <= s:
  32.         sum_t += v
  33.       else:
  34.         k_t += 1
  35.  
  36.   total_k += k_t # сумма количества товаров, которые не берем
  37.   if k_t > mx_k:
  38.     code = j # тип товара с наибольшим остатком
  39.     mx_k = k_t
  40. print(total_k, code)
  41.  
  42.        
  43.  
  44.  
  45.  
Advertisement
Add Comment
Please, Sign In to add comment