P14670 [ICPC 2025 Seoul R] Bookshelf
题目描述
:::align{center}

:::
一个长度为 $L$ 的书架上从左到右摆放着 $n$ 本书 $B_1, \cdots, B_n$。每本书 $B_i$ 有一个宽度(厚度)$w_i$。所有书的高度相同且与书架等高。书架上的位置 $x$ 对应距离左端 $x$ 个单位长度的点。如果一本书 $B_i$ 被放置在位置 $x$,它占据书架上区间 $[x, x + w_i)$。此时,书架上所有书占据的区间是两两不相交的。书架的左端位于位置 $0$,右端位于位置 $L$,整个书架占据区间 $[0, L)$。
为了重新排列当前书架上的书,你可以执行任意次以下操作:
- 从书架上选择一本书 $B_i$ 并将其取出,这将在其原位置产生一个连续的空白区间。
- 然后将 $B_i$ 插入到书架上任意一个长度至少为 $w_i$ 的现有空白区间中。
在此操作过程中,书架上所有其他保持原位的书必须固定不动——不能滑动、移动或以任何方式被推动。这是因为书和书架高度相同且紧密贴合,所以除非明确取出,否则任何书都不能移动。同时,在操作过程中,不允许通过推动或挪动其他书来腾出空间。
主人在书架上的 $n$ 本书中有一本最喜欢的书 $B_k$,希望将它放置到特定位置 $p$。
给定书的初始位置、最喜欢的书 $B_k$ 及其目标位置 $p$,请判断在执行任意次(可能为零次)上述操作后,是否有可能将 $B_k$ 放置在位置 $p$。
输入格式
你的程序需要从标准输入读取数据。输入的第一行包含两个整数 $n$ 和 $L$ ($1 \le n \le 100,000$; $1 \le L \le 10^9$),其中 $n$ 是书的数量,$L$ 是书架的长度。第二行包含 $n$ 个在 $0$ 到 $L-1$(含)之间的不同整数,表示初始按升序排列在书架上的书 $B_1, \cdots, B_n$ 的位置。第三行包含 $n$ 个正整数,其中第 $i$ 个整数 ($1 \le i \le n$) 是初始排列中第 $i$ 本书 $B_i$ 的宽度 $w_i$。第四行包含两个整数 $k$ 和 $p$ ($1 \le k \le n$; $0 \le p \le L-1$),其中初始排列中的第 $k$ 本书 $B_k$ 是最喜欢的书,其目标位置是 $p$。
输出格式
你的程序需要向标准输出写入数据。输出恰好一行。如果可以将最喜欢的书放置到目标位置,则输出 "YES",否则输出 "NO"。
说明/提示
翻译由 DeepSeek V3 完成