code: def FFD(s,B):
      
      remain = [B]        # keep list of empty space per bin
      sol = [[]]          # a list ot items (i.e., sizes) on each used bin
      for item in sorted(s,reverse=True):
          for (j,free) in enumerate(remain):
              if free >= item:
                  remain[j] -= item
                  sol[j].append(item)
                  break
          else: #does not fit in any bin
              sol.append([item])
              remain.append(B-item)
      return sol
docs: First Fit Decreasing heuristics for the Bin Packing Problem.
      Parameters:
          - s: list with item widths
          - B: bin capacity
      Returns a list of lists with bin compositions.