luogu#P11347. 「KTSC 2023 R2」学生
「KTSC 2023 R2」学生
题目背景
请勿用 C++14 (GCC 9) 提交。
#include<vector>
std::pair<int, std::vector<int>> complaint(int N, std::vector<int> L, std::vector<int> R);
题目描述
题目译自 2023년도 국제정보올림피아드 대표학생 선발고사 - 2차 선발고사 T3 「학생들」
在 IOI 大学,学生们不是用名字,而是用考试排名来称呼彼此。这所大学有 名学生,对于每个 ,第 名学生在期中考试中排名第 。
为了准备期末考试,学生们自发组成了辅导小组。每个辅导小组可以用两个整数 表示,表示编号在 到 之间的学生不在这个小组中,其他学生都在这个小组中。
某天早晨,IOI 大学的所有学生都收到了一封邮件,通知他们至少存在一个辅导小组。这一天被称为第 天早晨。从第 天晚上开始,以下情况会发生:
- 如果某个学生在第 天早晨之后推断出存在一个不包含自己的辅导小组,他会感到不公平,并在第 天晚上结束前提交投诉。一旦投诉提交,所有辅导小组的活动将在第 天早晨之前结束。
- 如果没有学生推断出存在一个不包含自己的辅导小组,则没有投诉提交,辅导小组的活动会在第 天早晨继续。所有学生都会意识到没有人在第 天提交投诉。
除此之外,学生们不会以任何方式共享信息。也就是说,他们只能知道自己所在的辅导小组及其成员,以及是否有投诉提交。学生们总是根据自己掌握的信息进行推断,不会推断出可能错误的结论。
你是 IOI 大学所有学生的朋友,知道所有辅导小组及其成员。当给定 个辅导小组的信息时,请编写一个程序,找出投诉提交的日期 以及在第 天提交投诉的学生编号。如果永远没有投诉提交,则返回 -1
。
请注意,只有你作为外部人知道所有辅导小组的信息,包括小组的数量 、每个小组的成员、问题的整体限制和部分限制等。学生们对此一无所知。
你需要实现以下函数:
pair<int, vector<int>> complaint(int N, vector<int> L, vector<int> R);
L, R
:大小为 的整数数组。对于每个 ,第 个辅导小组由编号小于 或大于 的学生组成。- 该函数返回一个由整数 和一个大小不超过 的整数数组 组成的对。 是投诉提交的日期, 是在第 天提交投诉的学生编号,按升序排列。如果永远没有投诉提交,则 为 , 为空数组。
注意,提交的代码中不应包含任何输入输出操作。
输入格式
示例评测程序按以下格式读取输入:
- 第 行:
- 第 行:
输出格式
示例评测程序按以下格式输出:
- 第 行:函数
complaint
返回的值 - 第 行:函数
complaint
返回的数组 的元素,以空格分隔
6 3
1 4
2 5
3 3
1
3
10 4
1 4
4 7
8 9
2 6
2
4 8 9
5 1
0 4
1
0 1 2 3 4
提示
样例 1 解释
考虑 的情况。
评测程序将调用如下函数:
complaint(6, [1, 2, 3], [4, 5, 3]);
由于第 号学生被所有辅导小组排除在外,他会在第一天立即提交投诉。其他学生在第一天不会提交投诉。因此,函数应返回 (1, [3])
。
数据范围
对于所有输入数据,满足:
- 对于每个 ,
详细子任务附加限制及分值如下表所示。
子任务 | 分值 | 附加限制 |
---|---|---|
对于每个 , | ||
对于每个 ,区间 和 互不相交或包含彼此。 即如果 ,则 或 |
||
对于每个 , | ||
无附加限制 |