#P16409. 机场连线计划

机场连线计划

机场连线计划

题目背景

航线规划师林澈正在为两个国家开通第一批跨境航班。一个国家的机场按字母序排列,另一个国家的机场也按字母序排列。每座机场能够承载的直达航班数量已经确定。林澈既要满足所有机场的容量限制,还要把最终方案整理成字典序最小的表格,方便航空公司审核。

题目描述

NN 个 A 国机场和 MM 个 U 国机场。现在要在两国机场之间安排若干条双向直达航线,要求:

  1. 每条航线连接一个 A 国机场和一个 U 国机场;
  2. 同一对机场之间至多安排一条航线;
  3. 每座机场连接的航线数量必须恰好等于其给定容量。

一个航线方案可以表示成一个 N×MN\times M 的 01 矩阵 XX

  • Xi,j=1X_{i,j}=1 表示第 ii 个 A 国机场与第 jj 个 U 国机场之间有航线;
  • Xi,j=0X_{i,j}=0 表示二者之间没有航线。

矩阵的行按照 A 国机场的字母序排列,列按照 U 国机场的字母序排列。

比较两个不同的方案时,按照从上到下、从左到右的顺序寻找第一个不同的格子。在这个格子中填 0 的方案字典序更小。

请构造满足所有要求的字典序最小方案。

输入格式

第一行包含两个整数 N,MN,M,分别表示 A 国机场和 U 国机场的数量。

第二行包含 NN 个整数:

a1,a2,,aN,a_1,a_2,\ldots,a_N,

其中 aia_i 表示第 ii 个 A 国机场的容量。

第三行包含 MM 个整数:

b1,b2,,bM,b_1,b_2,\ldots,b_M,

其中 bjb_j 表示第 jj 个 U 国机场的容量。

输出格式

若不存在满足要求的航线方案,输出一行:

-1

否则输出 NN 行,每行一个长度为 MM 的 01 字符串。第 ii 行第 jj 个字符表示矩阵中的 Xi,jX_{i,j}

输出的方案必须是所有合法方案中字典序最小的一个。

样例 1

输入

3 3
1 2 3
3 1 2

输出

100
101
111

说明

本例只有这一种合法方案。

样例 2

输入

4 4
3 2 1 1
1 3 1 2

输出

0111
0101
0100
1000

说明

本例存在多个合法方案,输出的是其中字典序最小的一个。

样例 3

输入

4 4
1 2 3 4
5 6 7 8

输出

-1

说明

两国机场容量总和不同,因此不可能安排合法方案。

样例 4

输入

2 3
47 47
47 40 7

输出

-1

说明

同一对机场之间至多只有一条航线。A 国只有两个机场、U 国只有三个机场,因此每个 A 国机场最多只能连接三条航线,不可能达到容量 4747

样例 5

输入

2 9
5 5
1 1 2 1 1 1 1 1 1

输出

001001111
111110000

样例 6

输入

4 6
0 0 0 0
0 0 0 0 0 0

输出

000000
000000
000000
000000

说明

输入容量可以为 00

数据范围

  • 1N,M501\le N,M\le 50
  • 0ai,bj500\le a_i,b_j\le 50