左右左右左左右,左右左左右
题号:NC312261
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}0-1 字符串,指每个字符都为 “0” 或 “1” 的字符串。
\hspace{15pt}每个长度为 n 的 0-1 字符串 s = s_1 s_2 \dots s_n,都拥有一个长度为 n左右差数列 d_1, d_2, \dots, d_n,定义为:

d_i = \big\lvert a_0 \cdot \operatorname {pc}(i, \texttt{1}) - a_1 \cdot \operatorname {pc}(i, \texttt{0}) \big\rvert

\hspace{15pt}其中 \operatorname {pc}(i, j) 表示字符串 s_1 s_2 \dots s_i 中字符 j 出现的次数。注意,其中 a_0 是字符 “1” 的系数,a_1 是字符 “0” 的系数。

\hspace{15pt}请你从所有长度为 n 的 0-1 字符串中,找出一个字符串 s,其拥有字典序最小的左右差数列。如果有多种答案,你可以任选一种。

【名词解释】
\hspace{15pt}数列的字典序比较:从左到右逐个比较两个数列的元素。如果在某个位置上元素不同,比较这两个元素的大小,元素小的数列字典序也小。如果一直比较到其中一个数列结束,则长度较短的数列字典序更小。
\hspace{15pt}更具体地:对于长度都为 n 的两个数列 [d_{1, 1}, d_{1, 2}, \dots, d_{1, n}][d_{2, 1}, d_{2, 2}, \dots, d_{2, n}],如果存在整数 i1 \le i \le n),使得 d_{1, 1} = d_{2, 1}d_{1, 2} = d_{2, 2},……,d_{1, i - 1} = d_{2, i - 1},但 d_{1, i} < d_{2, i},则称 [d_{1, 1}, d_{1, 2}, \dots, d_{1, n}][d_{2, 1}, d_{2, 2}, \dots, d_{2, n}] 字典序更小。如果一个数列不比任何数列字典序更大,则称这个数列字典序最小。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T1 \le T \le 5 \cdot 10^4)代表数据组数,每组测试数据描述如下:

\hspace{15pt}在一行上输入用空格隔开的三个整数 na_0a_11 \le n \le 2 \cdot 10^50 \le a_0,a_1 \le 2 \cdot 10^5),表示字符串的长度、字符 1 的系数、字符 0 的系数。

\hspace{15pt}除此之外,保证单个测试文件的 n 值之和不超过 2 \cdot 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出一个长度为 n 的 0-1 字符串 s,表示答案。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
4
12 3 2
9 1 1
3 0 3
8 0 0

输出

复制
010100101001
010101010
111
00000000

说明

\hspace{15pt}对于第二组测试数据,答案也可以是 “101010101”、“100101101” 等。

\hspace{15pt}对于第四组测试数据,答案也可以是 “00000000”、“11111111” 等。