题目描述
题目译自 JOISC 2023 Day3 T2 「クッキー / Cookies」
理惠女士喜欢做曲奇。她做了 N 种曲奇,第 i (1≤i≤N) 种做了 Ai 个。为了卖这些曲奇,她会将曲奇打包进盒子中。然而,需要满足以下条件:
- 对于每个盒子,在其中的曲奇种类应该是不同的
- 对于每个盒子,在其中的曲奇数应该等于如下 M 个数中的一个:B1,B2,…,BM
给定理惠女士做的曲奇的信息和打包的要求,写一个程序确定是否可以把所有曲奇打包。此外,如果可以将所有曲奇打包,你的程序应该输出一种使用最少的盒子的打包方案。
输入格式
第一行一个整数 N。
第二行 N 个整数 A1,A2,…,AN。
第三行一个整数 M。
第四行 M 个整数 B1,B2,…,BM。
输出格式
如果可以将所有曲奇打包并满足条件,第一行输出最少的盒子使用数 x。接下来输出 x 行表示打包方案。第 k (1≤k≤x) 行先输出一个整数 ck,表示第 k 个盒子中的曲奇数,接下来在这行输出 ck 个整数 vk,1,vk,2,…,vk,ck,表示放在这个盒子中的曲奇种类。如果在满足使用盒子数最少的情况下,有多种打包方案满足条件,输出任意一种均可。
如果不可能将所有曲奇打包,输出一行一个整数 −1 即可。
7
1 1 1 1 1 1 1
3
1 2 3
3
2 1 7
2 2 6
3 3 4 5
5
5 3 1 2 4
1
4
-1
7
5 4 4 2 1 1 1
2
2 6
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
数据范围与提示
对于所有输入数据,满足:
- 1≤N≤15 000
- Ai≥1,A1+A2+…+AN≤15 000
- 1≤M≤N
- 1≤Bj≤N,Bj<Bj+1
详细子任务附加限制及分值如下表所示。
| 子任务编号 |
附加限制 |
分值 |
| 1 |
N≤500,Ai=1 |
6 |
| 2 |
N≤500,M=1 |
7 |
| 3 |
A1+A2+…+AN≤15 |
12 |
| 4 |
A1+A2+…+AN≤500 |
45 |
| 5 |
A1+A2+…+AN≤3 000 |
15 |
| 6 |
无附加限制 |