SP9689 VBWORK - Very Boring Homework

题目描述

Z教授觉得他的作业对大多数学生来说很难(你还记得“无聊的作业”任务吗?)。没想到,许多学生都交了正确的答案。他觉得这不是因为作业简单,而是因为用来测试学生的程序的数据集太小了。所以,他决定再给学生同样的作业,但这次使用非常大的测试用例。当然,学生们认为作业因此更无聊了,再次需要你帮忙。 对于那些不知道Z教授上次给学生布置了什么作业的人来说: 你需要绘制一棵二叉搜索树(BST)的图。 _二叉搜索树,也称为有序或排序二叉树,是一种基于节点的二叉树数据结构,具有以下特征:_ 1. _每个节点的左子树只包含小于该节点键值的节点。_ 2. _每个节点的右子树只包含大于该节点键值的节点。_ 3. _左右子树也必须是二叉搜索树。_ 根据给定一系列整数键值,这些键值按顺序依次插入到BST中,可以形成唯一的BST。此外,Z教授希望学生绘制这棵BST的图形。 绘制BST图形的规则如下: 1. 若BST为单节点,它的图形就是一个'o'。 2. 若BST有非空子树,则在子树根节点上方画一个'|',再在它上方画一个'+'。最后,在'+'所在行,用最少量的'-'(包括0个)连接'+'和父节点'o'。 3. 左子树(如果存在)必须画在父节点左侧,同样,右子树(如果存在)画在右侧。 4. BST根节点所在的列不应含有属于左或右子树的字符。 5. BST每个节点的左、右子树图形在整棵树中不共享同一列。 绘制完整棵BST后,我们从上到下以1开始为行编号,从左到右以1开始为列编号。 由于树的规模非常大,Z教授无法检查图中每个细节。因此,只需要提交这幅图的m个片段给教授,而不是整个图。

输入格式

第一行为测试用例数量 $T$。接下来是 $T$ 个测试用例。 每个测试用例: 第一行包含正整数 $N$ ($N \leq 100000$)。 第二行包含 $N$ 个不同的整数,这些整数在顺序插入到一个空的BST中。 第三行包含一个整数 $M$ ($M \leq 5$)。 接下来 $M$ 行,每行包含四个整数,表示所需图形片段的左上角行、列号,以及该片段的行数 $R_i$ 和列数 $C_i$。**所有输入整数为正,能用32位有符号整数表示,除了 $R_i$ 和 $C_i$,它们不超过200且大于0**。

输出格式

对于每个测试用例: 输出第一行为测试用例编号,从1开始计数。 接着输出 $M$ 个块,每个块包含最多 $R_i$ 行,每行正好 $C_i$ 个字符。用空格填充空白位置。但如果一行只包含空格,则不输出该行。 每个图形片段后输出一个空行。 **请注意输出中的空格,任何多余的空格都会导致答案错误。**

说明/提示

- $1 \leq T \leq 10$ - $1 \leq N \leq 100000$ - $1 \leq M \leq 5$ - $1 \leq R_i, C_i \leq 200$ **本翻译由 AI 自动生成**