#P1220. 借阅登记
显示设置
本题导航点一下展开
我的笔记
✕
借阅登记
借阅登记
题目背景
学校图书馆的书架排成一长排,编号从左到右依次为 到 。今天图书馆开放了 次“班级集体借阅”,每次借阅针对一段连续编号的书架,每个被覆盖到的书架都会被借走一本书。管理员想知道:哪个书架最受欢迎,以及有多少个书架被借走的书达到了某个数量。
题目描述
有 个书架,编号 到 。今天共有 条借阅记录,第 条记录用两个整数 描述,表示编号在 内的每个书架都被借走了一本书。
所有借阅记录都发生完之后,请你回答两个问题:
- 被借走书本数量最多的书架,被借走了多少本书;
- 有多少个书架被借走的书本数量不少于 本。
初始时每个书架被借走的数量都是 。
输入格式
从标准输入读入数据。
第一行三个整数 。
接下来 行,每行两个整数 ,描述一条借阅记录,保证 。
输出格式
输出到标准输出。
输出两行:第一行是被借走书本数量的最大值,第二行是被借走数量不少于 的书架个数。
样例 1 输入
5 3 2
1 3
2 5
2 2
样例 1 输出
3
2
样例 1 解释
五个书架被借走的数量依次是 。最大值是 ;被借走数量不少于 本的书架是 号和 号,共 个。
样例 2 输入
4 1 1
1 4
样例 2 输出
1
4
特殊性质
- 特殊性质 A:每条记录都只覆盖一个书架,即对所有 都有 。此时每个书架被借走的数量就是覆盖它的记录条数,可以用桶直接统计。
- 特殊性质 B:每条记录都从 号书架开始,即对所有 都有 。此时 越小、覆盖的次数越多,只需要统计每个位置被"哪些记录的右端点覆盖"。
数据范围与子任务
| 子任务 | 测试点 | 分值 | 特殊性质 | ||
|---|---|---|---|---|---|
| 1 | 无 | ||||
| 2 | A 或 B | ||||
| 3 | 无额外保证 |
部分分提示
- 子任务 1 直接对每条记录把区间内每个书架的数量加一,复杂度 。
- 子任务 2 有特殊性质:满足 A 时用桶统计每个位置出现在多少条记录里;满足 B 时统计“有多少条记录的 当前位置”即可,可以用后缀和。
- 子任务 3 用差分:在 处 、在 处 ,最后做一次前缀和就能得到每个书架的数量,复杂度 。
注意被借走的数量最多可能达到 ,且书架数量很多,请使用合适的数据类型并注意数组边界( 时要在 处减一)。
提交说明
本题使用标准输入输出。程序应从标准输入读入数据,并将答案输出到标准输出。
相关
在下列比赛中: