Example #1
0
File: 3.cs Project: qifanyyy/CLCDSA
        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);
            }
        }
Example #2
0
File: 3.cs Project: qifanyyy/CLCDSA
        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);
            }
        }