#ATarc181c. [ARC181C] Row and Column Order

[ARC181C] Row and Column Order

AT_arc181_c [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)

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

  • 设第 i i 行的格子按 1,2,,N 1,2,\dots,N 列的顺序连接成字符串 Si S_i ,则有 SP1<SP2<<SPN S_{P_1} < S_{P_2} < \dots < S_{P_N} (按字典序)。
  • 设第 i i 列的格子按 1,2,,N 1,2,\dots,N 行的顺序连接成字符串 Ti T_i ,则有 TQ1<TQ2<<TQN T_{Q_1} < T_{Q_2} < \dots < T_{Q_N} (按字典序)。

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

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

  1. X<Y |X| < |Y| X1X2XX=Y1Y2YX X_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=Y1Y2Yi1 X_1X_2\ldots X_{i-1} = Y_1Y_2\ldots Y_{i-1}
    • Xi X_i 小于 Yi Y_i

输入格式

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

N N P1 P_1 P2 P_2 \dots PN P_N Q1 Q_1 Q2 Q_2 \dots QN Q_N

输出格式

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

A11A12A1N A_{11}A_{12}\dots A_{1N}
\vdots
AN1AN2ANN A_{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

说明/提示

数据范围

  • 2N500 2 \leq N \leq 500
  • P,Q P,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<S3 S_1 < S_2 < S_3 T2<T1<T3 T_2 < T_1 < T_3 ,满足条件。

由 ChatGPT 4.1 翻译