三目运算
题目描述
三目运算是一种比较特殊的运算,功能类似于 `if` 语句,其语法格式如下:
`条件?数值1:数值2`,三目运算得到的结果也是数值。当条件成立时得到的结果是数值 1,不成立时得到的结果为数值 2。
例如,`x>5?8:6` 就是一种三目运算表达式(也是分段常数表达式,见下文)。当 $x=7$ 时,该表达式的结果为 $8$,而 $x=3$ 时,该表达式的结果为 $6$。
---
本题中,称满足下列条件中**至少一条**的字符串 $S$ 是**分段常数表达式**:
- 十进制正整数 $a$,如 `243`,是分段常数表达式。
- 如果 $a$ 为一个十进制正整数,$p,q$ 为两个分段常数表达式,则 $\texttt{x>}a\texttt{?}p\texttt{:}q$ 是分段常数表达式。
- 如果 $a$ 为一个十进制正整数,$p,q$ 为两个分段常数表达式,则 $\texttt{x<}a\texttt{?}p\texttt{:}q$ 是分段常数表达式。
(后两条条件中, $x>a$ 和 $x<a$ 是条件,$p,q$ 为数值,该表达式是三目运算表达式。)
例如,`x>154?220:x<37?16:10` 是一个分段常数表达式,因为 `220` 和 `x<37?16:10` 都是分段常数表达式,从而整个表达式由第 2 条规则也是分段常数表达式。
---
给出一个分段常数表达式 $S$,保证出现的正整数均不超过 $m$。
yummy 有 $q$ 个询问,每次给出一个自然数 $x$ 的值,希望你求出分段常数表达式的值。
输入输出格式
输入格式
输入的第一行有两个正整数 $m,q$,分别表示表达式出现数字的最大可能值和询问个数。
第二行有一个字符串 $S$,表示这个分段常数表达式。
之后有 $q$ 行,每行有一个自然数 $x$,表示一次询问。
输出格式
对于每个询问输出一行一个正整数,表示表达式的结果。
输入输出样例
输入样例 #1
20 5
x>12?x<15?4:10:x<12?14:7
15
12
14
7
1000000
输出样例 #1
10
7
4
14
10
输入样例 #2
参见 expr/expr2.in
输出样例 #2
参见 expr/expr2.ans
输入样例 #3
参见 expr/expr3.in
输出样例 #3
参见 expr/expr3.ans
输入样例 #4
参见 expr/expr4.in
输出样例 #4
参见 expr/expr4.ans
说明
【样例 1 解释】
如果我们进行适当的换行和缩进可以得到:
```cpp
x>12? //如果 x>12
x<15? //那么判断 x<15 是否成立
4 //如果是则得到 4
:10 //如果不是则得到 10
:x<12? //否则(如果 x<=12) 判断 x<12 是否成立
14 //如果是则返回 14
:7 //如果不是则返回 7
```
按照这个思路模拟即可得到样例输出。
【样例 2 解释】
该样例满足测试点 $6$ 的性质。
【样例 3 解释】
该样例满足测试点 $10$ 的性质。
【样例 4 解释】
该样例满足测试点 $19$ 的性质。
【数据范围】
设 $n$ 为 $S$ 中三目运算符的个数。(选手可以通过 $n$ 来估计 $S$ 的串长。)
对于全体数据,保证 $0\le n\le 10^5$,$1\le m\le 10^5$,$1\le q\le 10^5$,$1\le x\le 10^9$,且 $S$ 是分段常数表达式。
| 测试点编号 | $n\le$ | $m\le$ | $q\le$ |
|:-:|:-:|:-:|:-:|
| $1$ | $0$ | $10^5$ | $10$ |
| $2$ | $1$ | $10^5$ | $10$ |
| $3\sim 5$ | $100$ | $9$ | $10$ |
| $6\sim 9$ | $100$ | $10^5$ | $10$ |
| $10\sim 12$ | $10^5$ | $9$ | $10$ |
| $13\sim 16$ | $10^5$ | $10^5$ | $10$ |
| $17\sim 18$ | $10^5$ | $9$ | $10^5$ |
| $19\sim 25$ | $10^5$ | $10^5$ | $10^5$ |