题目描述
给定 (1,2,…,N) 的两个排列 P=(P1,P2,…,PN), Q=(Q1,Q2,…,QN)。
请在 N 行 N 列的网格的每个格子中填入字符 0 或 1,使得以下所有条件均成立:
- 设第 i 行的格子按 1,2,…,N 列的顺序连接成字符串 Si,则有 SP1<SP2<⋯<SPN(按字典序)。
- 设第 i 列的格子按 1,2,…,N 行的顺序连接成字符串 Ti,则有 TQ1<TQ2<⋯<TQN(按字典序)。
可以证明,无论 P,Q 如何,至少存在一种满足所有条件的填法。
字典序 X<Y 的定义如下:对于字符串 X=X1X2…X∣X∣ 和 Y=Y1Y2…Y∣Y∣,X<Y 按字典序成立,当且仅当满足以下两条之一。这里 ∣X∣, ∣Y∣ 分别表示 X, Y 的长度。
- ∣X∣<∣Y∣ 且 X1X2…X∣X∣=Y1Y2…Y∣X∣。
- 存在整数 1≤i≤min{∣X∣,∣Y∣},使得以下两点都成立:
- X1X2…Xi−1=Y1Y2…Yi−1
- Xi 小于 Yi。
输入格式
输入通过标准输入给出,格式如下:
N P1 P2 … PN Q1 Q2 … QN
输出格式
请输出一种满足条件的填法。令 Aij 表示第 i 行第 j 列的字符,输出格式如下:
A11A12…A1N
⋮
AN1AN2…ANN
如果存在多种满足条件的填法,输出任意一种均可。
样例 1
输入
3
1 2 3
2 1 3
输出
001
101
110
样例 2
输入
15
8 15 10 2 4 3 1 13 5 12 9 6 14 11 7
4 1 5 14 3 12 13 7 11 8 6 2 9 15 10
输出
010001111110101
001000000101001
010001001100010
010000011110010
010011101101101
100101110100000
111100011001000
000001001100000
100011011000101
000111101011110
101010101010101
011010101011110
010011000010011
100110010110101
000101101100100
说明/提示
数据范围
- 2≤N≤500
- P,Q 是 (1,2,…,N) 的排列
- 输入均为整数
样例解释 1
对于本样例,S1=001,S2=101,S3=110,T1=011,T2=001,T3=110。因此 S1<S2<S3 且 T2<T1<T3,满足条件。
由 ChatGPT 4.1 翻译