UOJ Logo Universal Online Judge

UOJ

#853. 【JOISC2023】曲奇

附件下载 统计

理惠女士喜欢做曲奇。她做了 N 种曲奇,第 i (1iN) 种做了 Ai 个。为了卖这些曲奇,她会将曲奇打包进盒子中。然而,需要满足以下条件:

  • 对于每个盒子,在其中的曲奇种类应该是不同的
  • 对于每个盒子,在其中的曲奇数应该等于如下 M 个数中的一个:B1,B2,,BM

给定理惠女士做的曲奇的信息和打包的要求,写一个程序确定是否可以把所有曲奇打包。此外,如果可以将所有曲奇打包,你的程序应该输出一种使用最少的盒子的打包方案。

输入格式

第一行一个整数 N

第二行 N 个整数 A1,A2,,AN

第三行一个整数 M

第四行 M 个整数 B1,B2,,BM

输出格式

如果可以将所有曲奇打包并满足条件,第一行输出最少的盒子使用数 x。接下来输出 x 行表示打包方案。第 k (1kx) 行先输出一个整数 ck,表示第 k 个盒子中的曲奇数,接下来在这行输出 ck 个整数 vk,1,vk,2,,vk,ck,表示放在这个盒子中的曲奇种类。如果在满足使用盒子数最少的情况下,有多种打包方案满足条件,输出任意一种均可。

如果不可能将所有曲奇打包,输出一行一个整数 1 即可。

样例输入 1

7
1 1 1 1 1 1 1
3
1 2 3

样例输出 1

3
2 1 7
2 2 6
3 3 4 5

在这组样例中,可以按如下方式将 7 块曲奇打包进 3 个盒子中,并满足条件:

  • 将第 1,7 种曲奇放进第一个盒子中,每种曲奇放一个
  • 将第 2.6 种曲奇放进第二个盒子中,每种曲奇放一个
  • 将第 3,4,5 种曲奇放进第三个盒子中,每种曲奇放一个

如果你的程序按如上方式输出将被判为正确,因为不可能将这 7 块曲奇放进 2 个或更少的盒子中并满足条件。如果有其他打包曲奇的正确方式也会被判为正确。

这组样例满足子任务 1,3,4,5,6 的限制。

样例输入 2

5
5 3 1 2 4
1
4

样例输出 2

-1

在这组样例中,不可能将 15 块曲奇打包进盒子中并满足条件。因此输出 1

这组样例满足子任务 2,3,4,5,6 的限制。

样例输入 3

7
5 4 4 2 1 1 1
2
2 6

样例输出 3

7
6 1 2 3 4 5 6
2 2 1
2 3 1
2 4 1
2 7 1
2 3 2
2 3 2

这组样例满足子任务 4,5,6 的限制。

数据范围

对于所有输入数据,满足:

  • 1N15 000
  • Ai1,A1+A2++AN15 000
  • 1MN
  • 1BjN,Bj<Bj+1

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
1 N500,Ai=1 6
2 N500,M=1 7
3 A1+A2++AN15 12
4 A1+A2++AN500 45
5 A1+A2++AN3 000 15
6 无附加限制 15

时间限制:1s

空间限制:1024 MB