#P1886. Borrowers
Borrowers
描述
我指的是那些借书的人——他们是藏书的破坏者,是书架整齐排列的破坏者,是不成套书籍的制造者。 ——查尔斯·兰姆,《伊利亚随笔》(1823)《两种人》
和兰姆先生一样,图书管理员也有借书人的问题。人们不会把书放回原处。相反,归还的书会被放在总服务台,直到有图书管理员有空将它们放回书架上的正确位置。即使对图书管理员来说,把正确的书放在正确的位置也可能非常耗时。但由于现在许多图书馆都实现了计算机化,你可以编写一个程序来提供帮助。
当借阅者借出或归还一本书时,计算机会记录书名。图书管理员会定期要求你的程序提供一份已归还书籍的列表,以便将这些书放回书架上的正确位置。在将书放回书架之前,归还的书会按照作者排序,然后按照ASCII排序序列按书名排序。你的程序应该按照这些书在书架上应有的顺序输出已归还书籍的列表。对于每本书,你的程序应该告诉图书管理员哪本书(包括之前已上架的书)已经在书架上,并且归还的书应该放在它之前。
输入
首先,图书馆的藏书将被列出,每行一本,没有特定顺序。最初,它们都在书架上。没有两本书有相同的书名。每行的格式为:
"title" by author
藏书列表的结束将由一行仅包含单词:
END
藏书列表之后将是一系列借书、还书的记录,以及图书管理员要求协助重新上架的请求。每条记录将出现在单独的一行上,格式如下:
BORROW "title"
RETURN "title"
SHELVE
列表将由一行仅包含单词:
END
输出
每次出现SHELVE命令时,你的程序应该为图书管理员输出一系列指令,每行一条,格式为:
Put "title1" after "title2"
或者,对于这本书是收藏中的第一本的特殊情况:
Put "title" first
在每次SHELVE的一组指令之后,输出一行仅包含单词:
END
假设和限制
- 书名最多80个字符长。
- 作者最多80个字符长。
- 书名不会包含双引号(")字符。
输入数据 1
"The Canterbury Tales" by Chaucer, G.
"Algorithms" by Sedgewick, R.
"The C Programming Language" by Kernighan, B. and Ritchie, D.
END
BORROW "Algorithms"
BORROW "The C Programming Language"
RETURN "Algorithms"
RETURN "The C Programming Language"
SHELVE
END
输出数据 1
Put "The C Programming Language" after "The Canterbury Tales"
Put "Algorithms" after "The C Programming Language"
END