CF863D Yet Another Array Queries Problem

题目描述

给定一个长度为 $n$ 的数组 $a$,以及 $q$ 个操作。操作有两种类型: - $1\ l_{i}\ r_{i}$ — 对区间 $[l_{i}, r_{i}]$ 进行一次循环右移。即对于所有 $x$ 满足 $l_{i} \leq x < r_{i}$,新的 $a_{x+1}$ 变为原来的 $a_{x}$,且新的 $a_{l_{i}}$ 变为原来的 $a_{r_{i}}$; - $2\ l_{i}\ r_{i}$ — 将区间 $[l_{i}, r_{i}]$ 进行翻转。 数组中有 $m$ 个重要位置,分别为 $b_{1}, b_{2}, \ldots, b_{m}$。对于每个 $i$,$1 \leq i \leq m$,你需要输出在所有操作之后,数组下标为 $b_{i}$ 的位置上的数。

输入格式

第一行包含三个整数 $n$、$q$ 和 $m$($1 \leq n, q \leq 2 \cdot 10^{5}$,$1 \leq m \leq 100$)。 第二行包含 $n$ 个整数 $a_{1}, a_{2}, \ldots, a_{n}$($1 \leq a_{i} \leq 10^{9}$)。 接下来 $q$ 行,每行包含三个整数 $t_{i}, l_{i}, r_{i}$,表示第 $i$ 个操作的类型和操作区间($1 \leq t_{i} \leq 2$,$1 \leq l_{i} \leq r_{i} \leq n$)。 最后一行包含 $m$ 个整数 $b_{1}, b_{2}, \ldots, b_{m}$($1 \leq b_{i} \leq n$),表示数组中重要的位置。

输出格式

输出 $m$ 个整数,第 $i$ 个数表示在所有操作后,数组下标为 $b_{i}$ 的位置上的数。

说明/提示

由 ChatGPT 5 翻译