#L2858. 糖果机器
糖果机器
题目描述 译自 BalticOI 2009 Day1 T2「Candy Machine」
在糖果工厂中,有一台神秘的机器。它拥有一排输出槽(编号为 1 到任意合理范围),加工完毕的糖果会从这些槽中输出。每颗糖果都与众不同,机器会提前打印一份列表,告知老板每颗糖果的输出槽编号和输出时间。
老板需要安装自动收集车来接住所有糖果(糖果掉落地面会碎裂,必须接住),但收集车成本高昂,因此希望安装数量尽可能少。请编写程序解决以下问题:
- 计算接住所有糖果所需的最少收集车数量;
- 为每颗糖果分配一辆收集车,确保收集车能按时到达对应输出槽接住糖果。
收集车的移动规则:
- 每秒可移动到相邻的槽(如从槽 x 移动到 x-1 或 x+1);
- 生产开始前,收集车可自由移动到其要收集的第一颗糖果的输出槽位置(无时间限制)。
输入格式 第一行包含一个整数 n,表示糖果的数量。
接下来 n 行,每行包含两个整数 s_i 和 t_i,分别表示第 i 颗糖果的输出槽编号和输出时间。保证所有 (s_i, t_i) 互不相同。
输出格式 第一行包含一个整数 w,表示所需的最少收集车数量。
接下来 n 行,每行包含三个整数:第 j 颗糖果的输出槽 s_j、输出时间 t_j,以及接住它的收集车编号 w(j)(收集车编号从 1 到 w)。输出的糖果顺序可任意,但需准确对应每颗糖果的 (s_j, t_j) 信息。
样例输入
5
1 1
2 3
1 5
3 4
2 6
样例输出
2
1 1 1
2 3 1
1 5 2
3 4 1
2 6 2
数据范围与提示
- 20% 的数据:n ≤ 85,w ≤ 4;
- 60% 的数据:n ≤ 8000;
- 100% 的数据:1 ≤ n ≤ 100000,0 ≤ s_i, t_i ≤ 1000000000。