CF1614E Divan and a Cottage

题目描述

Divan 的新别墅终于建好了!然而,经过仔细检查后发现,工人们错误地安装了保温层,现在屋内的温度会直接受到室外温度的影响。更准确地说,如果早晨屋内的温度为 $P$,而室外温度为 $T$,那么到第二天早晨,屋内的温度会按照以下规则变化: - 如果 $P < T$,则 $P_{new} = P + 1$; - 如果 $P > T$,则 $P_{new} = P - 1$; - 如果 $P = T$,则 $P_{new} = P$。 其中 $P_{new}$ 表示第二天早晨屋内的温度。Divan 是一位非常忙碌的商人,因此有时他会长时间不在家,也不知道家里的温度是多少,于是他雇佣你来帮他查询。你将工作 $n$ 天。在第 $i$ 天的开始,你会首先得到当天的室外温度 $T_i$。随后,在第 $i$ 天你会收到 $k_i$ 个查询。每个查询会问你:“如果第一天早晨屋内的温度是 $x_i$,那么经过第 $i$ 天后,屋内的温度是多少?” 请你回答所有商人的查询。

输入格式

输入的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$),表示天数。 接下来是 $n$ 天的描述,每天的格式如下: 第一行包含一个整数 $T_i$($0 \leq T_i \leq 10^9$),表示当天的室外温度。 第二行包含一个非负整数 $k_i$($0 \leq k_i \leq 2 \cdot 10^5$),表示当天的查询数量。 第三行包含 $k_i$ 个整数 $x'_i$($0 \leq x'_i \leq 10^9$),表示 Divan 的加密查询。 初始时 $lastans = 0$。Divan 实际的查询为 $x_i = (x'_i + lastans) \bmod (10^9 + 1)$,其中 $a \bmod b$ 表示 $a$ 除以 $b$ 的余数。每回答完一个查询后,将 $lastans$ 设为本次查询的答案。 保证所有查询的总数(所有 $k_i$ 的和)不超过 $2 \cdot 10^5$。

输出格式

对于每个查询,输出一个整数,表示经过第 $i$ 天后屋内的温度。

说明/提示

让我们来看样例输入中的前四个查询。 第一天的室外温度是 $50$,第二天是 $50$,第三天是 $0$。 注意,初始时 $lastans = 0$。 - 第一天第一个查询的初始温度为 $(1 + lastans) \bmod (10^9 + 1) = 1$。经过第一天后,温度上升 $1$,因为 $1 < 50$。所以答案是 $2$。然后 $lastans = 2$。 - 第一天第二个查询的初始温度为 $(2 + lastans) \bmod (10^9 + 1) = 4$。经过第一天后,温度上升 $1$,因为 $4 < 50$。所以答案是 $5$。然后 $lastans = 5$。 - 第一天第三个查询的初始温度为 $(3 + lastans) \bmod (10^9 + 1) = 8$。经过第一天后,温度上升 $1$。所以答案是 $9$。然后 $lastans = 9$。 - 第二天第一个查询的初始温度为 $(4 + lastans) \bmod (10^9 + 1) = 13$。经过第一天后,温度上升 $1$,经过第二天后,温度再上升 $1$。所以答案是 $15$。然后 $lastans = 15$。 由 ChatGPT 4.1 翻译