Game Master
Contest: Codeforces Round 758 (Div.1 + Div. 2)
Difficulty rating: 1700
Tags: data structures, dfs and similar, dp, graphs, greedy, two pointers

$$$n$$$ players are playing a game.

There are two different maps in the game. For each player, we know his strength on each map. When two players fight on a specific map, the player with higher strength on that map always wins. No two players have the same strength on the same map.

You are the game master and want to organize a tournament. There will be a total of $$$n-1$$$ battles. While there is more than one player in the tournament, choose any map and any two remaining players to fight on it. The player who loses will be eliminated from the tournament.

In the end, exactly one player will remain, and he is declared the winner of the tournament. For each player determine if he can win the tournament.

Input format:
The first line contains a single integer $$$t$$$ ($$$1 \le t \le 100$$$) — the number of test cases. The description of test cases follows.

The first line of each test case contains a single integer $$$n$$$ ($$$1 \leq n \leq 10^5$$$) — the number of players.

The second line of each test case contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \leq a_i \leq 10^9$$$, $$$a_i \neq a_j$$$ for $$$i \neq j$$$), where $$$a_i$$$ is the strength of the $$$i$$$-th player on the first map.

The third line of each test case contains $$$n$$$ integers $$$b_1, b_2, \dots, b_n$$$ ($$$1 \leq b_i \leq 10^9$$$, $$$b_i \neq b_j$$$ for $$$i \neq j$$$), where $$$b_i$$$ is the strength of the $$$i$$$-th player on the second map.

It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$10^5$$$.

Output format:
For each test case print a string of length $$$n$$$. $$$i$$$-th character should be "1" if the $$$i$$$-th player can win the tournament, or "0" otherwise.

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Note:
In the first test case, the $$$4$$$-th player will beat any other player on any game, so he will definitely win the tournament.

In the second test case, everyone can be a winner.

In the third test case, there is only one player. Clearly, he will win the tournament.

Example input:
3
4
1 2 3 4
1 2 3 4
4
11 12 20 21
44 22 11 30
1
1000000000
1000000000

Example output:
0001
1111
1

Editorial:
Let's look at the fights in the reversed order. If player $$$x$$$ is the winner, then he won against some player $$$y$$$ in the last fight. In $$$(n-2)$$$-th fight either $$$x$$$ or $$$y$$$ won against some player $$$z$$$, and so on.
We always expand the set by adding a player that can lose against at least one player in the set, so if we can start from $$$x$$$ and end up with the set of all players, $$$x$$$ can win the tournament.
If we construct a directed graph where we add an edge from player $$$u$$$ to player $$$v$$$ if and only if $$$u$$$ can win against $$$v$$$ in a fight, the problem is equivalent to finding the set of nodes from which we can reach all the other nodes.
To reduce the number of edges to $$$2n-2$$$, we can sort players descending by $$$a_i$$$ and by $$$b_i$$$ and add only edges from $$$i$$$-th to $$$(i+1)$$$-th player in these orders.
Notice that $$$x$$$ can win the tournament if and only if there is a path from $$$x$$$ to the player with maximum $$$a_i$$$. To find the set of such nodes, we can run DFS from the player with maximum $$$a_i$$$ on the graph with each edge reversed, or do two pointers technique on arrays of players sorted by $$$a_i$$$ and $$$b_i$$$.