Pod starim krovovima
时间限制:1秒 内存限制:256M
题目背景
圣诞节后的一天——圣史蒂芬日,将要到来了。在非宗教领域,它在英国被称为节礼日。在克罗地亚人通过享用大餐来庆祝的同时,我们的英国朋友却有着踢足球的传统。
今年圣诞节,Pep 吃了太多的烤牛肉,因此他决定这次不踢足球,而是在家中分析球赛。
题目描述
背景:传奇的萨格勒布小酒馆 Kod Žnidaršića。
时间:1936 年。
剧情简介:Franjo 和朋友们正在酒吧里一边喝酒一边讨论阿比西尼亚的时事。他的儿子,小 Perica,坐在酒吧角落的一张小桌子旁。在 Perica 面前,有 \(N\) 个玻璃杯,编号为 \(1\) 到 \(N\)。每个玻璃杯的容量(单位为纳升)已知,杯中当前的液体量也已知。
问题:小 Perica 想知道,通过在玻璃杯之间相互倒液体,最多能让多少个玻璃杯变空。他可以任意多次将任意整数纳升的液体从一个杯子倒到另一个杯子,只要没有液体溢出即可。
你的任务是输出最多能变空的玻璃杯数量,以及一种可能的所有玻璃杯中液体的分布方案。如果有多种分布方案能达到相同数量的空杯,输出任意一种即可。注意,不要求最小化倒液体的次数。
输入格式
第一行包含一个整数 \(N\)(\(1 \leq N \leq 1\,000\)),表示玻璃杯的数量。
接下来的 \(N\) 行,每行包含两个整数 \(T_i\)(\(0 \leq T_i \leq 10^9\))和 \(Z_i\)(\(1 \leq Z_i \leq 10^9\)),分别表示第 \(i\) 个玻璃杯当前的液体量和容量(单位均为纳升)。保证 \(T_i \leq Z_i\)。
输出格式
第一行输出最多能变空的玻璃杯数量。
第二行输出 \(N\) 个整数,表示操作后每个玻璃杯中的液体量(顺序与输入一致)。如果有多种方案,输出任意一种即可。
输入输出样例 #1
输入 #1
5
2 6
1 6
0 6
6 6
5 6
输出 #1
2
6 6 2 0 0
输入输出样例 #2
输入 #2
5
4 5
2 7
5 5
0 10
7 9
输出 #2
3
0 0 0 10 8
输入输出样例 #3
输入 #3
8
2 6
3 4
1 1
9 10
0 10
4 5
6 8
3 9
输出 #3
5
0 0 0 9 10 0 0 9
说明/提示
对第二个样例的说明:一种可能的倒液体方案如下:
1. 把第 1 个杯子的液体全部倒入第 2 个杯子。
2. 把第 2 个杯子的液体全部倒入第 4 个杯子。
3. 把第 3 个杯子的 4 纳升液体倒入第 4 个杯子,把第 3 个杯子的 1 纳升倒入第 5 个杯子。
此时,第 1、2、3 号杯子都为空。
信息
- ID
- 1110
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 被复制
- 1
- 上传者