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 翻译