#ATarc181c. [ARC181C] Row and Column Order

[ARC181C] Row and Column Order

题目描述

给定 (1,2,,N)(1,2,\dots,N) 的两个排列 P=(P1,P2,,PN), Q=(Q1,Q2,,QN)P=(P_1,P_2,\dots,P_N),\ Q=(Q_1,Q_2,\dots,Q_N)

请在 NNNN 列的网格的每个格子中填入字符 01,使得以下所有条件均成立:

  • 设第 ii 行的格子按 1,2,,N1,2,\dots,N 列的顺序连接成字符串 SiS_i,则有 SP1<SP2<<SPNS_{P_1} < S_{P_2} < \dots < S_{P_N}(按字典序)。
  • 设第 ii 列的格子按 1,2,,N1,2,\dots,N 行的顺序连接成字符串 TiT_i,则有 TQ1<TQ2<<TQNT_{Q_1} < T_{Q_2} < \dots < T_{Q_N}(按字典序)。

可以证明,无论 P,QP,Q 如何,至少存在一种满足所有条件的填法。

字典序 X<YX < Y 的定义如下:对于字符串 X=X1X2XXX=X_1X_2\dots X_{|X|}Y=Y1Y2YYY=Y_1Y_2\dots Y_{|Y|}X<YX < Y 按字典序成立,当且仅当满足以下两条之一。这里 X, Y|X|,\ |Y| 分别表示 X, YX,\ Y 的长度。

  1. X<Y|X| < |Y|X1X2XX=Y1Y2YXX_1X_2\ldots X_{|X|} = Y_1Y_2\ldots Y_{|X|}
  2. 存在整数 1imin{X,Y}1 \leq i \leq \min\lbrace |X|, |Y| \rbrace,使得以下两点都成立:
    • X1X2Xi1=Y1Y2Yi1X_1X_2\ldots X_{i-1} = Y_1Y_2\ldots Y_{i-1}
    • XiX_i 小于 YiY_i

输入格式

输入通过标准输入给出,格式如下:

NN P1P_1 P2P_2 \dots PNP_N Q1Q_1 Q2Q_2 \dots QNQ_N

输出格式

请输出一种满足条件的填法。令 AijA_{ij} 表示第 ii 行第 jj 列的字符,输出格式如下:

A11A12A1NA_{11}A_{12}\dots A_{1N}
\vdots
AN1AN2ANNA_{N1}A_{N2}\dots A_{NN}

如果存在多种满足条件的填法,输出任意一种均可。

样例 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

说明/提示

数据范围

  • 2N5002 \leq N \leq 500
  • P,QP,Q(1,2,,N)(1,2,\dots,N) 的排列
  • 输入均为整数

样例解释 1

对于本样例,S1=S_1 =001S2=S_2 =101S3=S_3 =110T1=T_1 =011T2=T_2 =001T3=T_3 =110。因此 S1<S2<S3S_1 < S_2 < S_3T2<T1<T3T_2 < T_1 < T_3,满足条件。

由 ChatGPT 4.1 翻译