如何在C ++中做到这一点?

令S为n个不相交的线段的集合,这些线段的上端点位于线y = 1上,而下端点位于线y = 0上。这些段将水平条[-∞:∞] x [0:1]划分为n + 1个区域。给出O(nlogn)时间算法,以在S中的段上构建二叉搜索树,以便可以在O(nlogn)时间中确定包含查询点的区域。另外,详细描述查询算法。