#P14496. [NCPC 2025] Bohemian Bookshelf

[NCPC 2025] Bohemian Bookshelf

题目背景

:::align{center}

图为 Dr. Philippe Garigue 收藏中的古籍书架。
图片来源:Taylor Tryburski,CC BY-SA 4.0。 :::

题目描述

在摆放书籍的问题上,藏书家与室内设计师往往难以达成一致:直立?横放?究竟哪种方式才是“正确”的?

而你,总是对传统见解保持怀疑,于是选择了——两者都要!

你的书架呈现出一种别具风格的组合:整齐直立的书籍旁,是一摞精心排列的水平堆叠书籍,看上去宛如文学版的阶梯神庙。整体效果既展示了波西米亚式的自由随性,又带着点可爱的学者式心不在焉,同时又有足够的精致暗示:你确实读过其中的一些书。

一本书由其书脊高度与厚度来描述。如果它的高度不超过书架的高度,则可以直立摆放。

或者,书也可以横放,彼此叠加成一摞;出于美观考虑,这个堆叠中书籍的书脊高度必须按不增顺序排列。堆叠中所有书籍的总厚度不得超过书架高度。

而直立书籍的总厚度与堆叠的宽度之和不得超过书架的宽度。

样例 1 中的书籍可以按照下图摆放:

:::align{center} :::

输入格式

输入包含:

  • 一行,三个整数 NN, HH, WW2N1002 \le N \le 100, 130H350130 \le H \le 350, 300W900300 \le W \le 900),分别表示要摆放的书本数量、书架高度(毫米)与书架宽度(毫米),
  • 接下来 NN 行,每行两个整数 hh, tt76h48376 \le h \le 483, 5t605 \le t \le 60),表示一本书的书脊高度与厚度(毫米)。题目保证每本书单独放置时,既可直立也可横放,因此满足 hmax(W,H)h \le \max(W, H)

输出格式

输出两行。

第一行以单词 upright 开头,随后输出所有直立书籍的编号。

第二行以单词 stacked 开头,随后输出堆叠中书籍的编号,从底到顶依次排列。

要求至少有一本直立书籍,且至少有一本堆叠书籍。书籍编号为 11NN

如果答案不唯一,你可以输出任意一个。若不存在满足条件的摆放方式,则输出 impossible

3 250 350
178 32
200 60
297 50
upright 1
stacked 3 2
2 300 300
290 60
290 60
impossible

提示

翻译由 ChatGPT-5 完成