CF1681B Card Trick
题目描述
Monocarp 刚学会了一个新的纸牌戏法,迫不及待地想向你展示。他向你展示了一副共有 $n$ 张牌的完整牌堆。你看到从最上面到最下面的牌的点数分别是 $a_1, a_2, \dots, a_n$,并且所有点数都不相同。
接着,他让你对牌堆洗牌 $m$ 次。第 $j$ 次洗牌时,你需要将最上面的 $b_j$ 张牌拿出,放到剩下的 $n-b_j$ 张牌的下面,且不改变顺序。
然后,Monocarp 用魔法告诉你牌堆最上面的那张牌的点数。然而,你并不相信这个魔法。你告诉他,其实你自己也能知道最上面的那张牌。你能在 Monocarp 展示之前,先说出洗牌 $m$ 次后最上面那张牌的点数吗?
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 2 \times 10^5$),表示牌堆中的牌数。
第二行包含 $n$ 个两两不同的整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$),表示每张牌的点数。
第三行包含一个整数 $m$($1 \le m \le 2 \times 10^5$),表示洗牌的次数。
第四行包含 $m$ 个整数 $b_1, b_2, \dots, b_m$($1 \le b_j \le n-1$),表示第 $j$ 次洗牌时拿出的牌数。
所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$,$m$ 的总和也不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示洗牌 $m$ 次后,牌堆最上面那张牌的点数。
说明/提示
在第一个测试用例中,每次洗牌实际上交换了两张牌。经过三次交换后,牌堆变为 $[2, 1]$。
在第二个测试用例中,第二次洗牌抵消了第一次洗牌的效果。第一次将最上面的三张牌放到最后一张牌的下面,第二次又把那张牌放回到剩下三张牌的下面。因此,牌堆保持不变,最上面那张牌的点数为 $3$。
由 ChatGPT 4.1 翻译