方針

まず、既存の点を覚えておく。(q)

  • すべての点から d 離れていたら atLeast のところに座る
  • ある点との距離と atLeast との距離が d 以下ならば、 ある点 + d 離れたところを座る候補に変更する

解答

class BearChairs:
    def findPositions(self, atLeast, d):
        n = len(atLeast)
        res = [0 for i in range(n)]
        q = []

        for i in range(n):
            q.sort()
            x = atLeast[i]
            for p in q:
                if abs(p - x) < d:
                    x = p + d
            q.append(x)
            res[i] = x

        return tuple(res)