P17648 [IO 2025 #1] 与 Boss 的战斗
题目描述
大黄蜂(Hornet)有 $n$ 项战斗属性,第 $i$ 项属性的数值是整数 $a_i$。在漫长的冒险中,她遇到了 $m$ 个 Boss,每个 Boss 也有这 $n$ 项属性:第 $i$ 个 Boss 的第 $j$ 项属性为 $b_{i,j}$。
大黄蜂不一定按编号从小到大的顺序与 Boss 战斗,也不一定只与每个 Boss 战斗一次。她有一个长度为 $k$ 的 Boss 编号数组 $c$,用来确定她与哪些 Boss 战斗。数组 $c$ 中的数可以重复,也不要求 $1$ 到 $m$ 中的每个编号都出现。
在冒险中,可能发生以下两种事件:
1. `1 i x`:大黄蜂的第 $i$ 项属性增加 $x$,即令 $a_i\gets a_i+x$。
2. `2 j s`:大黄蜂与编号为 $c_j$ 的 Boss 战斗。如果 $s$ 为 `win`,记录表示她获胜;如果 $s$ 为 `loss`,记录表示她落败。
大黄蜂能击败编号为 $c_j$ 的 Boss,当且仅当她的每项属性都不低于该 Boss 的对应属性,即对任意 $i$,都有 $a_i\ge b_{c_j,i}$。因此,只要 大黄蜂有至少一项属性低于 Boss 的对应属性,她就会落败。
遗憾的是,数组中的数值 $c_j$ 已经遗失,但所有事件的记录仍然保留。请判断是否存在一个数组 $c$,使所有战斗的实际结果都与记录一致,还是记录中存在错误。同一个下标 $j$ 在不同事件中出现时,始终代表同一个 $c_j$。
输入格式
第一行包含三个整数 $n,m,k$,分别表示战斗属性数、Boss 数和事件数,满足 $1\le n,m,k\le1000$。数组 $c$ 的长度也是 $k$。
第二行包含 $n$ 个整数 $a_i$,表示 大黄蜂各项属性的初始数值,满足 $0\le a_i\le500$。
接下来 $m$ 行,每行包含 $n$ 个整数 $b_{i,j}$,表示一个 Boss 的各项属性,满足 $0\le b_{i,j}\le500$。
接下来 $k$ 行,按照题目描述中的格式给出事件记录。其中,$1\le i\le n$,$1\le j\le k$,$1\le x\le500$,且 $s$ 为 `win` 或 `loss`。
输出格式
如果存在一个数组 $c$,使事件记录正确,输出 `Yes`;否则输出 `No`。
注意,不要求 大黄蜂至少与每个 Boss 战斗一次。
说明/提示
### 样例 1 解释
可以选择 $c=[*,1,2,*]$,其中 $*$ 表示任意 Boss 编号,因为记录中没有关于这些位置的信息。
开始与 Boss 战斗前,大黄蜂的属性为 $[2,3,0]$。凭借这些属性,她能击败第一个 Boss,但会输给第二个 Boss。
### 样例 2 解释
不存在符合要求的数组。在最后一次事件前,大黄蜂的属性为 $[2,3,3]$,因此她不会输给任何一个 Boss。