#P2705. Overflowing Bookshelf
Overflowing Bookshelf
本题没有可用的提交语言。
描述
Agnes C. Mulligan 是一位狂热的藏书爱好者——她不断购买新书,并努力为这些书寻找空间。她有一个专门放置"待读"书籍的书架,新书总是放在这个书架上。当她决定阅读其中一本书时,会将其从书架上取下,腾出空间来放置更多书籍。但有时,她购买新书并将其放在书架上时,由于空间有限,可能会导致右侧的一本或多本书被挤掉。她总是从书架左侧添加新书,挤掉右侧的书。当然,她也可以从书架的任意位置取下一本书来阅读。
你的任务是编写一个模拟器,跟踪书架上书籍的添加和移除操作。在每次模拟结束时,按从左到右的顺序显示书架上剩余的书籍。每次模拟中的书籍由一个唯一的正整数标识,。模拟包含三种事件类型:
• 添加(Add):将一本新书从书架左侧推入,必要时将其他书籍向右推。只有当左侧相邻的书籍推动时,右侧的书籍才会移动。任何无法完全放在书架上的书籍会从右侧掉落。单本书的宽度永远不会超过给定的书架宽度。当前已在书架上的书籍不会被重复添加。
• 移除(Remove):如果书籍在书架上,则将其移除,留下一个空位;如果书籍不在书架上,则忽略该操作。
• 结束(End):结束当前模拟,并打印书架上的书籍内容。
输入
输入文件包含一个或多个模拟数据,以一行单独的 表示输入结束。每个模拟数据以书架宽度 ()开始,后跟一系列添加和移除事件。
• 添加事件的格式为:大写字母 A
,后跟书籍 ID 和宽度 (),例如 A 6 5
。
• 移除事件的格式为:大写字母 R
,后跟书籍 ID,例如 R 3
。
• 结束事件为单独一行的大写字母 E
。
输出
对于每个模拟案例,输出一行标签(如输出样例所示),后按从左到右的顺序列出书架上剩余的书籍 ID。
输入数据 1
10
R 3
A 6 5
A 42 3
A 3 5
A 16 2
A 15 1
R 16
E
7
A 49 6
A 48 2
R 48
E
5
A 1 1
A 2 1
A 3 1
R 2
A 4 1
A 5 1
R 5
R 4
A 6 1
A 7 4
E
-1
输出数据 1
PROBLEM 1: 15 3
PROBLEM 2:
PROBLEM 3: 7 6
来源
2005年美国中西部地区竞赛