#L2858. 糖果机器

    ID: 5440 传统题 2000ms 512MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>贪心其他排序计算几何离散化与扫描数据结构树状数组

糖果机器

题目描述 译自 BalticOI 2009 Day1 T2「Candy Machine」

在糖果工厂中,有一台神秘的机器。它拥有一排输出槽(编号为 1 到任意合理范围),加工完毕的糖果会从这些槽中输出。每颗糖果都与众不同,机器会提前打印一份列表,告知老板每颗糖果的输出槽编号和输出时间。

老板需要安装自动收集车来接住所有糖果(糖果掉落地面会碎裂,必须接住),但收集车成本高昂,因此希望安装数量尽可能少。请编写程序解决以下问题:

  1. 计算接住所有糖果所需的最少收集车数量;
  2. 为每颗糖果分配一辆收集车,确保收集车能按时到达对应输出槽接住糖果。

收集车的移动规则:

  • 每秒可移动到相邻的槽(如从槽 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。