#P13422. [COCI 2019/2020 #4] Pod starim krovovima

    ID: 13232 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>贪心2019Special Judge排序COCI(克罗地亚)

[COCI 2019/2020 #4] Pod starim krovovima

Description

背景:传奇的萨格勒布小酒馆 Kod Žnidaršića。

时间:1936 年。

剧情简介:Franjo 和朋友们正在酒吧里一边喝酒一边讨论阿比西尼亚的时事。他的儿子,小 Perica,坐在酒吧角落的一张小桌子旁。在 Perica 面前,有 NN 个玻璃杯,编号为 11NN。每个玻璃杯的容量(单位为纳升)已知,杯中当前的液体量也已知。

问题:小 Perica 想知道,通过在玻璃杯之间相互倒液体,最多能让多少个玻璃杯变空。他可以任意多次将任意整数纳升的液体从一个杯子倒到另一个杯子,只要没有液体溢出即可。

你的任务是输出最多能变空的玻璃杯数量,以及一种可能的所有玻璃杯中液体的分布方案。如果有多种分布方案能达到相同数量的空杯,输出任意一种即可。注意,不要求最小化倒液体的次数。

Input Format

第一行包含一个整数 NN1N10001 \leq N \leq 1\,000),表示玻璃杯的数量。

接下来的 NN 行,每行包含两个整数 TiT_i0Ti1090 \leq T_i \leq 10^9)和 ZiZ_i1Zi1091 \leq Z_i \leq 10^9),分别表示第 ii 个玻璃杯当前的液体量和容量(单位均为纳升)。保证 TiZiT_i \leq Z_i

Output Format

第一行输出最多能变空的玻璃杯数量。

第二行输出 NN 个整数,表示操作后每个玻璃杯中的液体量(顺序与输入一致)。如果有多种方案,输出任意一种即可。

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

5
0 0 0 9 10 0 0 9

Hint

对第二个样例的说明:一种可能的倒液体方案如下:

  1. 把第 1 个杯子的液体全部倒入第 2 个杯子。
  2. 把第 2 个杯子的液体全部倒入第 4 个杯子。
  3. 把第 3 个杯子的 4 纳升液体倒入第 4 个杯子,把第 3 个杯子的 1 纳升倒入第 5 个杯子。 此时,第 1、2、3 号杯子都为空。

翻译由 ChatGPT-4.1 完成。