SP13809 ISRANK - ISRANK

题目描述

有 **N** 所学校,每所学校的第 **i** 所有 **S $_{i}$** 名学生。即将举办一场名为 **IPC** 的校际编程竞赛,这是项非常受重视的活动。因此,各所学校进行了内部预赛,并为每名学生根据预赛成绩分配了一个独特的预测排名。定义 **P $_{ij}$** 为第 **i** 所学校中第 **j** 名学生的预测排名,在校内这些排名是唯一的,即: $$\forall i, P_{ij} = P_{ik} \Leftrightarrow j=k$$ 需要注意,不同学校的学生可能拥有相同的预测排名。 在 **IPC** 结束后,每个学校都收到了一份包含该校学生得分的结果卡片。我们用 **M $_{ij}$** 表示第 **i** 所学校的第 **j** 名学生的实际得分。这里的规则是,所有参赛学生的得分在整个比赛中都是唯一的,即: $$\forall i, \forall j, M_{ij} = M_{pk} \Leftrightarrow i=p \land j=k$$ 你的任务是设计一个系统,它能高效地处理以下类型的查询: - **L**:需要考虑的学校数量 - **A1 A2 A3 ... AL**:学校的编号列表(以1为起始) - **P1 P2**:关注的预测排名范围 - **K**:希望查询的排名位置 问题是:在指定的学校中,选出预测排名在 **P1** 到 **P2** 范围内(包括 **P1** 和 **P2**)的所有学生,找到实际得分第 **K** 高的学生成绩。(最高分为第一名,第二高分为第二名,以此类推)

输入格式

第一行输入一个整数 **N**,表示学校数量。 接下来的行是一组空格分隔的整数 **S $_{i}$**,表示每个学校的学生数。 接下来的 **N** 行中,第 **i** 行包含 **S $_{i}$** 个空格分隔的整数,其第 **j** 个数为 **P $_{ij}$**,表示对应学生的预测排名。 接下来的 **N** 行中,第 **i** 行包含 **S $_{i}$** 个空格分隔的整数,其第 **j** 个数为 **M $_{ij}$**,表示对应学生的实际得分。 接下来一行是一个整数 **Q**,表示查询的数量。 接下来是 **Q** 组查询。每次查询的格式如下: - 第一行是一个整数 **L**,表示参与学校的数量。 - 之后是 **L** 个整数,表示所选学校的1基编号。 - 接着是两个整数 **P1** 和 **P2**,表示需要关注的预测排名区间。 - 最后一行是一个整数 **K**。

输出格式

对于每个查询,输出一行整数表示答案。如果不可能得到答案,输出 `-1`。

说明/提示

- $1 \leq N \leq 10^5$ - $1 \leq S_i \leq 10^5$ - $1 \leq P_{ij} \leq S_i$ - $1 \leq M_{ij} \leq 10^9$ - $1 \leq Q \leq 10^5$ - $1 \leq L \leq 10$ - $1 \leq K \leq 10^5$ **本翻译由 AI 自动生成**