CF794A Bank Robbery

题目描述

一名劫匪试图抢劫银行但未能得手。不过,他成功打开了所有的保险箱。 银行客户 Oleg 非常喜欢钱(谁不喜欢呢),于是决定趁这次未遂抢劫的机会,从保险箱中偷些钞票。有很多保险箱排成一排,从左至右第 $i$ 个保险箱称为保险箱 $i$。所有保险箱里一共剩下了 $n$ 张钞票,第 $i$ 张钞票在保险箱 $x_{i}$ 中。当前 Oleg 站在保险箱 $a$ 处。有两名保安,其中一人在保险箱 $b$ 处,满足 $b < a$,也就是说,第一个保安在 Oleg 的左边;另一个在保险箱 $c$ 处,满足 $c > a$,即在 Oleg 的右边。 这两名保安非常懒惰,不会移动。每一秒,Oleg 可以选择拿走当前位置保险箱内的所有钞票,或者移动到相邻的保险箱。但他不能在任何时候进入被保安守卫的保险箱,否则就会因盗窃而被抓。请问 Oleg 最多能拿到多少张钞票?

输入格式

输入的第一行包含三个用空格分隔的整数 $a$、$b$ 和 $c$($1 \leq b < a < c \leq 10^{9}$),表示 Oleg 所在的保险箱位置、第一名保安的位置和第二名保安的位置。 第二行输入一个整数 $n$($1 \leq n \leq 10^{5}$),表示钞票的总数量。 第三行输入 $n$ 个用空格分隔的整数 $x_{1}, x_{2}, ..., x_{n}$($1 \leq x_{i} \leq 10^{9}$),其中 $x_{i}$ 表示第 $i$ 张钞票所在的保险箱编号。注意,$x_i$ 可能不互不相同。

输出格式

输出一个整数,表示 Oleg 最多能拿到的钞票数量。

说明/提示

在第一个样例中,Oleg 可以拿到在位置 $4$、$5$、$6$ 的钞票(注意第 $5$ 号位置有两张钞票)。Oleg 不能拿到 $7$ 号和 $8$ 号保险箱的钞票,因为不能越过第二名保安。同理,Oleg 也不能拿到 $3$ 和 $2$ 号保险箱的钞票,因为不能越过第一名保安。因此,他最多可以拿到 $4$ 张钞票。 在第二个样例中,Oleg 无法不用经过保安而拿到任何一张钞票。 由 ChatGPT 5 翻译