luogu#P11186. 三目运算

三目运算

题目描述

三目运算是一种比较特殊的运算,功能类似于 if 语句,其语法格式如下:

条件?数值1:数值2,三目运算得到的结果也是数值。当条件成立时得到的结果是数值 1,不成立时得到的结果为数值 2。

例如,x>5?8:6 就是一种三目运算表达式(也是分段常数表达式,见下文)。当 x=7x=7 时,该表达式的结果为 88,而 x=3x=3 时,该表达式的结果为 66


本题中,称满足下列条件中至少一条的字符串 SS分段常数表达式

  • 十进制正整数 aa,如 243,是分段常数表达式。
  • 如果 aa 为一个十进制正整数,p,qp,q 为两个分段常数表达式,则 x>a?p:q\texttt{x>}a\texttt{?}p\texttt{:}q 是分段常数表达式。
  • 如果 aa 为一个十进制正整数,p,qp,q 为两个分段常数表达式,则 x<a?p:q\texttt{x<}a\texttt{?}p\texttt{:}q 是分段常数表达式。

(后两条条件中, x>ax>ax<ax<a 是条件,p,qp,q 为数值,该表达式是三目运算表达式。)

例如,x>154?220:x<37?16:10 是一个分段常数表达式,因为 220x<37?16:10 都是分段常数表达式,从而整个表达式由第 2 条规则也是分段常数表达式。


给出一个分段常数表达式 SS,保证出现的正整数均不超过 mm

yummy 有 qq 个询问,每次给出一个自然数 xx 的值,希望你求出分段常数表达式的值。

输入格式

输入的第一行有两个正整数 m,qm,q,分别表示表达式出现数字的最大可能值和询问个数。

第二行有一个字符串 SS,表示这个分段常数表达式。

之后有 qq 行,每行有一个自然数 xx,表示一次询问。

输出格式

对于每个询问输出一行一个正整数,表示表达式的结果。

20 5
x>12?x<15?4:10:x<12?14:7
15
12
14
7
1000000
10
7
4
14
10

参见 expr/expr2.in
参见 expr/expr2.ans
参见 expr/expr3.in
参见 expr/expr3.ans
参见 expr/expr4.in
参见 expr/expr4.ans

提示

【样例 1 解释】

如果我们进行适当的换行和缩进可以得到:

x>12?    //如果 x>12
  x<15?  //那么判断 x<15 是否成立
    4    //如果是则得到 4
    :10  //如果不是则得到 10
  :x<12? //否则(如果 x<=12) 判断 x<12 是否成立
    14   //如果是则返回 14
    :7   //如果不是则返回 7

按照这个思路模拟即可得到样例输出。

【样例 2 解释】

该样例满足测试点 66 的性质。

【样例 3 解释】

该样例满足测试点 1010 的性质。

【样例 4 解释】

该样例满足测试点 1919 的性质。

【数据范围】

nnSS 中三目运算符的个数。(选手可以通过 nn 来估计 SS 的串长。)

对于全体数据,保证 0n1050\le n\le 10^51m1051\le m\le 10^51q1051\le q\le 10^5​1x1091\le x\le 10^9,且 SS 是分段常数表达式。

测试点编号 nn\le mm\le qq\le
11 00 10510^5 1010
22 11
353\sim 5 100100 99
696\sim 9 10510^5
101210\sim 12 10510^5 99
131613\sim 16 10510^5
171817\sim 18 99 10510^5
192519\sim 25 10510^5