public int FurthestBuilding(int[] heights, int bricks, int ladders)
        {
            var pq = new MyPriorityQueue();

            for (int i = 0; i < heights.Length - 1; i++)
            {
                int climb = heights[i + 1] - heights[i];
                if (climb <= 0)
                {
                    continue;
                }

                pq.add(climb);

                if (pq.size() > ladders)
                {
                    var first = pq.poll();
                    bricks -= first;
                }

                if (bricks < 0)
                {
                    return(i);
                }
            }

            return(heights.Length - 1);
        }