CF522C Chicken or Fish?
题目描述
Polycarp 正在飞机上,这是他最期待的时刻——午餐时间。BerAvia 公司的空姐正在给乘客一一递送食物,从第一个乘客开始,一直服务到最后一个。Polycarp 坐在第 $m$ 个座位,即他是第 $m$ 个拿到食物的人。
飞机上的菜单一共有 $k$ 道菜肴,Polycarp 登机时,就已把每种菜的数量数清楚,即他知道数值 $a_{1}, a_{2}, \ldots, a_{k}$,其中 $a_{i}$ 表示第 $i$ 种菜的份量。
空姐已经为前 $m-1$ 位乘客分发了食物,微笑着问 Polycarp 想要什么。此时,Polycarp 意识到,有些菜可能已经被拿光了。在他前面的乘客中,有些人在拿到食物时表示出不满,仿佛是在说“我很失望”,原因是所要的菜没有了,这时乘客需要选择其他还剩下的菜。如果 Polycarp 没有听到乘客发出任何声音,那就表示该乘客第一次就拿到了想要的菜。
请帮助 Polycarp 判断每种菜在他被服务时是否可能已经没有了。
输入格式
输入包括若干组测试数据。第一行为一个整数 $t$($1 \le t \le 100000$),表示有多少组测试数据。每组数据之间用一行空行隔开。
每组数据的第一行两个整数 $m$ 和 $k$($2 \le m \le 100000$, $1 \le k \le 100000$),分别表示 Polycarp 的座位号和菜的种类数。
第二行包含 $k$ 个整数 $a_{1}, a_{2}, \ldots, a_{k}$($1 \le a_{i} \le 100000$),对应第 $i$ 种菜的初始份量。
接下来 $m-1$ 行,每行描述 Polycarp 对前面乘客拿菜的观察:每行两个整数 $t_{j}, r_{j}$($0 \le t_{j} \le k, 0 \le r_{j} \le 1$),其中 $t_j$ 是第 $j$ 位乘客得到的菜品编号(如果 Polycarp 没看清,则为 $0$),$r_j$ 表示该乘客是否失望($1$ 表示失望,$0$ 表示满意)。
所有 $a_i$ 的总和至少是 $m$,这意味着 Polycarp 肯定会拿到某道菜,即使那是最后的选择。数据保证一致性。
所有测试数据中,$m$ 的总和不超过 $100000$,$k$ 的总和不超过 $100000$。
输出格式
对于每组输入数据,输出一行结果。结果是一个长度为 $k$ 的字符串,包含字母 "Y" 或 "N"。如果当轮到 Polycarp 时,第 $i$ 种菜有可能已经没有了,则输出 "Y",否则输出 "N"。
说明/提示
在第一个输入集合中,根据第二位乘客的选择结果,可能会出现不同情况:
- 如果他选择的是第一种菜,那么当轮到 Polycarp 时,第一种菜可能没了;
- 如果他选的是第四种菜,那么第四种菜可能没了;
- 否则,Polycarp 可以任意选择四种菜肴。
因此,答案为 "YNNY"。
在第二个输入集合中,一种可能的情况如下:第一位乘客拿走了仅有的第三种菜,第二位乘客拿了第二种菜。随后,第三位乘客想要第三种菜,却发现没有了,所以他感到失望,只能拿第二种菜。接着,第四位乘客拿了第四种菜,这样 Polycarp 可以选择第一、第四或第五种菜。
同样,还有一种可能是,当空姐到达 Polycarp 时,第一种或第五种菜已经用尽(假如第二位乘客拿走其中之一)。可以确定的是,第四种菜份数足够,因此 Polycarp 总能拿到第四种菜。所以,答案为 "YYYNY"。
**本翻译由 AI 自动生成**