codeforces#P1904D2. Set To Max (Hard Version)
Set To Max (Hard Version)
Description
This is the hard version of the problem. The only differences between the two versions of this problem are the constraints on $n$ and the time limit. You can make hacks only if all versions of the problem are solved.
You are given two arrays $a$ and $b$ of length $n$.
You can perform the following operation some (possibly zero) times:
- choose $l$ and $r$ such that $1 \leq l \leq r \leq n$.
- let $x=\max(a_l,a_{l+1},\ldots,a_r)$.
- for all $l \leq i \leq r$, set $a_i := x$.
Determine if you can make array $a$ equal to array $b$.
Each test contains multiple test cases. The first line contains an integer $t$ ($1 \leq t \leq 10^4$) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer $n$ ($1 \le n \le 2 \cdot 10^5$) — the length of the arrays.
The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le n$) — the elements of array $a$.
The third line contains $n$ integers $b_1, b_2, \ldots, b_n$ ($1 \le b_i \le n$) — the elements of array $b$.
It is guaranteed that the sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.
For each test case, output "YES" (without quotes) if you can make $a$ into $b$ using any number of operations, and "NO" (without quotes) otherwise.
You can output "YES" and "NO" in any case (for example, strings "yES", "yes" and "Yes" will be recognized as a positive response).
Input
Each test contains multiple test cases. The first line contains an integer $t$ ($1 \leq t \leq 10^4$) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer $n$ ($1 \le n \le 2 \cdot 10^5$) — the length of the arrays.
The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le n$) — the elements of array $a$.
The third line contains $n$ integers $b_1, b_2, \ldots, b_n$ ($1 \le b_i \le n$) — the elements of array $b$.
It is guaranteed that the sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.
Output
For each test case, output "YES" (without quotes) if you can make $a$ into $b$ using any number of operations, and "NO" (without quotes) otherwise.
You can output "YES" and "NO" in any case (for example, strings "yES", "yes" and "Yes" will be recognized as a positive response).
5
5
1 2 3 2 4
1 3 3 2 4
5
3 4 2 2 4
3 4 3 4 4
5
3 2 1 1 1
3 3 3 2 2
2
1 1
1 2
3
1 1 2
2 1 2
YES
NO
YES
NO
NO
Note
In the first test case, we can achieve array $b$ by applying a single operation: $(l,r)=(2,3)$.
In the second test case, it can be shown we cannot achieve array $b$ in any amount of operations.
In the third test case, we can achieve array $b$ by applying two operations: $(l,r)=(2,5)$. followed by $(l,r)=(1,3)$.
In the fourth and fifth test cases, it can be shown we cannot achieve array $b$ in any amount of operations.