P14400 [JOISC 2016] 回转寿司 / Sushi

题目描述

在回转寿司店 JOI,寿司被放置在环形传送带上运送。传送带以逆时针方向旋转。当前,店内有从第 1 号到第 $N$ 号的 $N$ 位顾客,他们按编号顺序逆时针围坐在传送带周围。第 $N$ 号顾客的旁边是第 1 号顾客。 每位顾客手持一枚寿司。每枚寿司都有一个称为“价格”的固定数值。顾客离店时,需支付与其所持寿司价格相等的金额。 回转寿司店 JOI 正在实施一项特别的限时促销活动。该活动分为 $Q$ 轮,按顺序从传送带前端提供寿司。第 $i$ 轮($1 \le i \le Q$)提供的寿司内容由三个整数组成 $(S_i, T_i, P_i)$ 表示。 限时促销的规则如下。在促销开始前,店员将回收传送带上所有的寿司。然后对 $i = 1, 2, \ldots, Q$ 依次执行以下步骤 1 至 3: 1. 在传送带前端、第 $S_i$ 号顾客的前方位置,放置一枚价格为 $P_i$ 的寿司。 2. 寿司从第 $S_i$ 号顾客的位置移动至第 $T_i$ 号顾客的位置,沿传送带逆时针方向行进。途经的每位顾客将对寿司执行以下操作: - 若该寿司的价格小于顾客当前所持寿司的价格,则顾客将自己的寿司与传送带上的寿司交换。 - 若该寿司的价格大于或等于顾客当前所持寿司的价格,则不进行交换。 3. 寿司经过第 $T_i$ 号顾客前方后,店员将回收该寿司。 你是一名在店员手下实习的学徒,负责清洗店内的寿司。为准备清洗工作,你需要提前弄清楚在限时促销的 $Q$ 轮提供中,店员每次回收的寿司价格分别是多少。 **补充(比赛结束后追记)** 当 $S_i = T_i$ 时,仅第 $S_i$ 号顾客执行第 2 步操作。 **题目** 给定每位顾客在限时促销开始前各自所持寿司的价格信息,以及限时促销中每轮提供的寿司信息,编写程序求出每轮提供中店员回收的寿司价格。

输入格式

从标准输入读取以下数据: - 第 1 行包含两个整数 $N$ 和 $Q$,以空格分隔。这表示顾客人数为 $N$,限时促销中寿司的提供轮数为 $Q$。 - 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含一个整数 $X_i$。这表示第 $i$ 号顾客在限时促销开始前持有价格为 $X_i$ 的寿司。 - 接下来的 $Q$ 行中,第 $i$ 行($1 \le i \le Q$)包含三个整数 $S_i$、$T_i$ 和 $P_i$,以空格分隔。这表示第 $i$ 轮提供的寿司由三元组 $(S_i, T_i, P_i)$ 表示。

输出格式

输出共 $Q$ 行。第 $i$ 行($1 \le i \le Q$)输出一个整数,表示在第 $i$ 轮寿司提供中,店员回收的寿司价格。

说明/提示

### 样例 1 解释 第 1 至第 6 号顾客在每轮寿司提供后所持寿司的价格如下: - 第 1 轮寿司提供后:$8, 5, 6, 4, 5, 9$ - 第 2 轮寿司提供后:$8, 5, 6, 4, 4, 5$ - 第 3 轮寿司提供后:$7, 5, 6, 4, 4, 5$ - 第 4 轮寿司提供后:$2, 5, 6, 4, 4, 5$ - 第 5 轮寿司提供后:$2, 5, 6, 4, 4, 5$ - 第 6 轮寿司提供后:$2, 5, 5, 1, 4, 4$ - 第 7 轮寿司提供后:$2, 5, 3, 1, 4, 4$ ### 数据范围 所有输入数据均满足以下条件: - $1 \le N \le 400\,000$。 - $1 \le Q \le 25\,000$。 - $1 \le X_i \le 1\,000\,000\,000$($1 \le i \le N$)。 - $1 \le S_i \le N$($1 \le i \le Q$)。 - $1 \le T_i \le N$($1 \le i \le Q$)。 - $1 \le P_i \le 1\,000\,000\,000$($1 \le i \le Q$)。 ### 子任务 **子任务 1 [5 分]** 满足以下条件: - $N \le 2000$。 - $Q \le 2000$。 **子任务 2 [15 分]** 满足以下条件: - $S_i = 1$($1 \le i \le Q$)。 - $T_i = N$($1 \le i \le Q$)。 **子任务 3 [80 分]** 无额外限制。 翻译由 Qwen3-235B 完成