loj#P4103. 「POI2021 R1」Montażysta

「POI2021 R1」Montażysta

题目描述

题目译自 XXIX Olimpiada Informatyczna – I etap Montażysta

Bajtazar 接手了剪辑 nn 部关于 POI 题目讲解的视频的任务。已知剪辑第 ii 部视频需要 tit_{i} 天,并且必须在第 did_{i} 天之前发布。Bajtazar 有光纤网络,所以剪辑好的视频可以立即上传到服务器上。但是剪辑过程非常耗费硬件资源,而 Bajtazar 只有一台电脑,所以他一次只能剪辑一部视频。

视频很多,Bajtazar 担心他不能按时完成所有的任务。请你帮助他,计算出如果他最早可以在第 11 天开始剪辑,他最多能按时发布多少部视频。为了让 Bajtazar 更有信心,你还需要给出一个具体的工作计划,说明如何达到这个结果。

输入格式

输入的第一行包含一个整数 n (1n5105)n\ (1 \leq n \leq 5\cdot 10^5),表示要剪辑的视频的数量。

接下来的 nn 行,每行包含两个整数 ti,di (1ti,di109)t_{i}, d_{i}\ (1 \leq t_{i}, d_{i} \leq 10^{9}),表示第 ii 部视频的剪辑时间和发布期限。

输出格式

第一行输出一个整数 mm,表示 Bajtazar 最多能按时发布的视频的数量。

接下来的 mm 行,你需要给出一个工作计划;第 ii 行应该包含两个整数 fi,ki (1fin,1ki)f_{i},k_{i}\ (1 \leq f_{i} \leq n, 1 \leq k_{i}),表示第 fif_{i} 号视频应该在第 kik_{i} 天开始剪辑。如果有多种方案可以达到最大的 mm,你的程序可以输出任意一种。

5
4 5
2 4
5 3
1 9
3 10
3
2 3
4 7
5 8

样例 2

见附加文件下 [mon1.in](file:mon1.in) 和 [mon1.out](file:mon1.out)。

该样例满足 $n=1000 ; t_{i}=5 \cdot 10^{8}, d_{i}=i \cdot 10^{6}$。答案是 22

样例 3

见附加文件下 [mon2.in](file:mon2.in) 和 [mon2.out](file:mon2.out)。

该样例满足 n=1000,ti=2,di=1999n=1000 , t_{i}=2, d_{i}=1999。答案是 999999

样例 4

见附加文件下 [mon3.in](file:mon3.in) 和 [mon3.out](file:mon3.out)。

该样例满足 n=5105,ti{1,2,3},di=109n=5\cdot 10^5, t_{i} \in\{1,2,3\}, d_{i}=10^{9}。答案是 51055\cdot 10^5

数据范围与提示

详细子任务附加限制及分值如下表所示。如果你的程序正确地输出了 mm,而方案不正确,你将获得该测试点 50%50 \% 的分数。

子任务编号 附加限制 分值
11 n10n \leq 10 2020
22 n1000n \leq 1000 3030
33 ti,di106t_{i}, d_{i} \leq 10^{6} 2020
44 无附加限制 3030