311392: CF1980C. Sofia and the Lost Operations

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

C. Sofia and the Lost Operationstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output

Sofia had an array of $n$ integers $a_1, a_2, \ldots, a_n$. One day she got bored with it, so she decided to sequentially apply $m$ modification operations to it.

Each modification operation is described by a pair of numbers $\langle c_j, d_j \rangle$ and means that the element of the array with index $c_j$ should be assigned the value $d_j$, i.e., perform the assignment $a_{c_j} = d_j$. After applying all modification operations sequentially, Sofia discarded the resulting array.

Recently, you found an array of $n$ integers $b_1, b_2, \ldots, b_n$. You are interested in whether this array is Sofia's array. You know the values of the original array, as well as the values $d_1, d_2, \ldots, d_m$. The values $c_1, c_2, \ldots, c_m$ turned out to be lost.

Is there a sequence $c_1, c_2, \ldots, c_m$ such that the sequential application of modification operations $\langle c_1, d_1, \rangle, \langle c_2, d_2, \rangle, \ldots, \langle c_m, d_m \rangle$ to the array $a_1, a_2, \ldots, a_n$ transforms it into the array $b_1, b_2, \ldots, b_n$?

Input

The first line contains an integer $t$ ($1 \le t \le 10^4$) — the number of test cases.

Then follow the descriptions of the test cases.

The first line of each test case contains an integer $n$ ($1 \le n \le 2 \cdot 10^5$) — the size of the array.

The second line of each test case contains $n$ integers $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le 10^9$) — the elements of the original array.

The third line of each test case contains $n$ integers $b_1, b_2, \ldots, b_n$ ($1 \le b_i \le 10^9$) — the elements of the found array.

The fourth line contains an integer $m$ ($1 \le m \le 2 \cdot 10^5$) — the number of modification operations.

The fifth line contains $m$ integers $d_1, d_2, \ldots, d_m$ ($1 \le d_j \le 10^9$) — the preserved value for each modification operation.

It is guaranteed that the sum of the values of $n$ for all test cases does not exceed $2 \cdot 10^5$, similarly the sum of the values of $m$ for all test cases does not exceed $2 \cdot 10^5$.

Output

Output $t$ lines, each of which is the answer to the corresponding test case. As an answer, output "YES" if there exists a suitable sequence $c_1, c_2, \ldots, c_m$, and "NO" otherwise.

You can output the answer in any case (for example, the strings "yEs", "yes", "Yes" and "YES" will be recognized as a positive answer).

ExampleInput
7
3
1 2 1
1 3 2
4
1 3 1 2
4
1 2 3 5
2 1 3 5
2
2 3
5
7 6 1 10 10
3 6 1 11 11
3
4 3 11
4
3 1 7 8
2 2 7 10
5
10 3 2 2 1
5
5 7 1 7 9
4 10 1 2 9
8
1 1 9 8 7 2 10 4
4
1000000000 203 203 203
203 1000000000 203 1000000000
2
203 1000000000
1
1
1
5
1 3 4 5 1
Output
YES
NO
NO
NO
YES
NO
YES

Output

题目大意:
索菲亚有一个包含n个整数的数组a_1, a_2, ..., a_n。有一天她对这个数组感到无聊,于是决定依次对它应用m个修改操作。每个修改操作由一对数字描述,意味着数组的第c_j个元素应该被赋值为d_j,即执行赋值a_{c_j} = d_j。在依次应用了所有修改操作后,索菲亚丢弃了结果数组。最近,你找到了一个包含n个整数的数组b_1, b_2, ..., b_n。你想知道这个数组是否是索菲亚的数组。你知道原始数组的值以及d_1, d_2, ..., d_m的值。c_1, c_2, ..., c_m的值丢失了。问题是,是否存在一个序列c_1, c_2, ..., c_m,使得依次应用修改操作, , ..., 到数组a_1, a_2, ..., a_n上,可以将它转换为数组b_1, b_2, ..., b_n。

输入输出数据格式:
输入:
- 第一行包含一个整数t(1 ≤ t ≤ 10^4)——测试用例的数量。
- 然后是t个测试用例的描述。
- 每个测试用例的第一行包含一个整数n(1 ≤ n ≤ 2 × 10^5)——数组的大小。
- 每个测试用例的第二行包含n个整数a_1, a_2, ..., a_n(1 ≤ a_i ≤ 10^9)——原始数组的元素。
- 每个测试用例的第三行包含n个整数b_1, b_2, ..., b_n(1 ≤ b_i ≤ 10^9)——找到的数组的元素。
- 每个测试用例的第四行包含一个整数m(1 ≤ m ≤ 2 × 10^5)——修改操作的数量。
- 每个测试用例的第五行包含m个整数d_1, d_2, ..., d_m(1 ≤ d_j ≤ 10^9)——每个修改操作的保留值。
- 保证所有测试用例的n值之和不超过2 × 10^5,m值之和也不超过2 × 10^5。

输出:
- 输出t行,每行是对应测试用例的答案。如果存在合适的序列c_1, c_2, ..., c_m,则输出"YES",否则输出"NO"。
- 答案可以用任何大小写组合输出(例如,"yEs", "yes", "Yes"和"YES"都将被视为肯定答案)。题目大意: 索菲亚有一个包含n个整数的数组a_1, a_2, ..., a_n。有一天她对这个数组感到无聊,于是决定依次对它应用m个修改操作。每个修改操作由一对数字描述,意味着数组的第c_j个元素应该被赋值为d_j,即执行赋值a_{c_j} = d_j。在依次应用了所有修改操作后,索菲亚丢弃了结果数组。最近,你找到了一个包含n个整数的数组b_1, b_2, ..., b_n。你想知道这个数组是否是索菲亚的数组。你知道原始数组的值以及d_1, d_2, ..., d_m的值。c_1, c_2, ..., c_m的值丢失了。问题是,是否存在一个序列c_1, c_2, ..., c_m,使得依次应用修改操作, , ..., 到数组a_1, a_2, ..., a_n上,可以将它转换为数组b_1, b_2, ..., b_n。 输入输出数据格式: 输入: - 第一行包含一个整数t(1 ≤ t ≤ 10^4)——测试用例的数量。 - 然后是t个测试用例的描述。 - 每个测试用例的第一行包含一个整数n(1 ≤ n ≤ 2 × 10^5)——数组的大小。 - 每个测试用例的第二行包含n个整数a_1, a_2, ..., a_n(1 ≤ a_i ≤ 10^9)——原始数组的元素。 - 每个测试用例的第三行包含n个整数b_1, b_2, ..., b_n(1 ≤ b_i ≤ 10^9)——找到的数组的元素。 - 每个测试用例的第四行包含一个整数m(1 ≤ m ≤ 2 × 10^5)——修改操作的数量。 - 每个测试用例的第五行包含m个整数d_1, d_2, ..., d_m(1 ≤ d_j ≤ 10^9)——每个修改操作的保留值。 - 保证所有测试用例的n值之和不超过2 × 10^5,m值之和也不超过2 × 10^5。 输出: - 输出t行,每行是对应测试用例的答案。如果存在合适的序列c_1, c_2, ..., c_m,则输出"YES",否则输出"NO"。 - 答案可以用任何大小写组合输出(例如,"yEs", "yes", "Yes"和"YES"都将被视为肯定答案)。

加入题单

上一题 下一题 算法标签: