CF1437G Death DBMS
题目描述
为了简单起见,我们假设“死亡笔记本”是一本只要写上名字就能杀人的笔记本。
用它杀人很容易,但要记录那些你还没杀但仍打算杀的人却相当困难。你决定制作一个“死亡数据库管理系统”——一个可以轻松访问可能的受害者数据库的计算机程序。下面让我向你描述一下它。
让我们来定义一个受害者:受害者有一个仅由小写字母组成的名字(不一定唯一)和一个整数表示嫌疑值。
在程序开始时,用户将 $n$ 个受害者名字输入数据库,每个嫌疑值初始设置为 $0$。
随后,用户将进行两种查询:
- $1$ $i$ $x$,将第 $i$ 个受害者的嫌疑值设置为 $x$;
- $2$ $q$,求出姓名为 $q$ 的连续子串的受害者的最大嫌疑值。
提醒一下,这个程序并不杀人,它只是帮助搜索可以写在笔记本上的名字。因此,在整个查询过程中,**数据库中的受害者名单不会发生变化**。
输入格式
第一行包含两个整数 $n$ 和 $m$,分别表示受害者人数和查询次数。
接下来的 $n$ 行,每行包含一个字符串 $s_i$,表示第 $i$ 个受害者的姓名。
接下来的 $m$ 行,每行都有一个查询:
- $1$ $i$ $x$,将第 $i$ 个受害者的嫌疑值设置为 $x$;
- $2$ $q$,求出姓名为 $q$ 的连续子串的受害者的最大嫌疑值。
输出格式
对于每个第二种查询,输出一个整数。
如果没有受害者的姓名是 $q$ 的连续子串,则输出 $-1$。否则,输出受害者姓名为 $q$ 的连续子串的最大嫌疑值。
说明/提示
#### 数据范围
- $1 \le n, m \le 3 \cdot 10^5$。
- 对于第一种查询:$1 \le i \le n$,$0 \le x \le 10^9$。
- 字符串 $s_i$ 的总长度不超过 $3 \cdot 10^5$,字符串 $q$ 的总长度不超过 $3 \cdot 10^5$。
- 保证每个受害者的姓名和第二种查询的字符串 $q$ 仅由小写字母组成。
- 保证第二种查询至少有一个。