static void SplitSpace(SpaceInfo space, out int leftHalf, out int rightHalf) { space.count--; if (space.count <= 0) { spaces.RemoveAt(0); } leftHalf = (space.size - 1) / 2; rightHalf = (space.size - 1) - leftHalf; AddSpace(rightHalf); if (leftHalf > 0) { AddSpace(leftHalf); } }
static void SplitMultiSpaces(ref long peopleCount, out long leftHalf, out long rightHalf) { SpaceInfo largestSpaces = spaces[0]; peopleCount -= largestSpaces.count; leftHalf = (largestSpaces.size - 1) / 2; rightHalf = (largestSpaces.size - 1) - leftHalf; if (peopleCount <= 0) { return; } spaces.RemoveAt(0); AddMultiSpaces(rightHalf, largestSpaces.count); if (leftHalf > 0) { AddMultiSpaces(leftHalf, largestSpaces.count); } }