#4484. 酒鬼 (drunkard)

酒鬼 (drunkard)

题目描述

一条街道上有 nn 个路灯排成一排,编号 1,2,,n1, 2, \ldots, n 。小 Z 喝醉了,初始在时刻 00 时站在 11 号路灯旁。

小 Z 从某个时间 t0t_0 (t00t_0 \geq 0) 开始游走。在时间 t0t_0 之后,小 Z 每隔一个单位时间就会移动到相邻的路灯旁。如果小 Z 在时间 ttii 号路灯旁,则他在时间 t+1t + 1 必然移动到 i1i - 1 号路灯或 i+1i + 1 号路灯旁。特殊的,小 Z 不会移动到街道边界之外,即他始终只停留在路灯 11nn 之间(包含边界)。例如,小 Z 在时间 t0+1t_0 + 1 必然在 22 号路灯旁。

你得知了一些路人提供的信息,每条信息都可以用整数 pip_iqiq_i 表示,代表在 qiq_i 时刻某位路人看到到小 Z 在路灯 pip_i 旁边。你想找到小 Z 开始到处走动的时间 t0t_0 。在收到信息的同时,你还想根据当前收到的信息推断 t0t_0 可能的最大值和最小值。

路人提供的信息也有可能不一致。一旦你发现提供的信息有矛盾,只需停止计算并报告信息不一致。

输入格式

drunkard.in 文件读入数据。

第一行包含两个整数 nnmm,代表路灯的数量和操作次数。

接下来 mm 行分别包含一个操作 opiop_i,格式为以下其一:

  • clue pip_i qiq_i:行人在时间 qiq_i 看到小 Z 在灯柱 pip_i 旁边。
  • min:你想根据当前收到的信息推断 t0t_0 的最小可能值。
  • max:你想根据当前收到的信息推断 t0t_0 的最大可能值。

输出格式

输出到 drunkard.out 文件。

对于每个 minmax 操作,输出问题的答案。

对于 max 操作,如果 t0t_0 可以为任意大的数(即不存在一个有限的最大值),那么答案为字符串 inf

如果当前收到的信息不一致,那么答案为字符串 bad

样例

10 7
clue 1 3
min
clue 3 5
max
clue 10 6
max
min
1
3
bad
bad
  • 在第 1 条线索后,小 Z 可能在时间 1 开始向灯柱 2 走动,在时间 2 向灯柱 1 走动,但是不可能是由时间 0 便开始走动的。
  • 在第 2 条线索后,小 Z 必须在时间 3 开始由灯柱 1 (从第 1 条线索得知) 向灯柱 3 走动,才能在时间 5 抵达灯柱 3。
  • 在第 3 条线索后,即使小 Z 在时间 5 开始由灯柱 3 (从第 2 条线索得知) 向灯柱 10 走动,仍然不可能在时间 6 抵达灯柱 10。

样例 2

点击链接 ex_drunkard2.inex_drunkard2.out 下载大样例 2 的输入数据和输出数据。

数据范围

对于所有数据,

10n10910 \leq n \leq 10^9

1m2×1051 \leq m \leq 2 \times 10^5

1pin1 \leq p_i \leq n

0qi1090 \leq q_i \leq 10^9

存在至少一个 minmax 操作,

opiop_iclueminmax之一。

子任务 分数 附加约束条件
11 1818 m=2m = 2pi2p_i \geq 2op1=op_1 = clueop2=op_2 = min,所有线索一致
22 99 m=2m = 2pi2p_i \geq 2op1=op_1 = clueop2=op_2 = max,所有线索一致
33 2020 1m10001 \leq m \leq 1000,只存在 cluemin 操作,所有线索一致
44 1616 1m10001 \leq m \leq 1000pi2p_i \geq 2
55 2020 pi2p_i \geq 2
66 1717 无附加限制