#donuts20154. [donuts_2015_4]ドーナツの箱詰め
[donuts_2015_4]ドーナツの箱詰め
问题描述
甜甜圈店员小姐Naoki Sato负责装甜甜圈盒子。现在,Naoki正在试图将个甜甜圈装入个盒子中。盒子的容积为,每个盒子都可以放置一个甜甜圈。
Naoki希望使用所有的盒子。然而,由于盒子的数量多于甜甜圈的数量,她决定通过将盒子嵌套在一起来使用所有的盒子。每个盒子内必须仅放入一个甜甜圈或一个箱子。对于盒子,它可以放入体积比盒子小的箱子。即使嵌套的盒子内部还有其他盒子或者甜甜圈,也会视作1个物体计数。如果将盒子放入盒子,则必须在盒子和盒子之间放入缓冲材料量。找出所需缓冲材料总量的最小值。
另外,由于Naoki非常笨拙,她可能在装箱过程中压碎盒子。每次Naoki压碎盒子时,请计算此时所需缓冲材料总量的最小值,假设她使用剩余的所有盒子进行装箱。Naoki总共压碎个盒子,第个被压碎的盒子是。
输入
输入以以下格式从标准输入中给出。
...
...
- 第一行包含两个整数,以空格分隔。表示开始时有个盒子和个甜甜圈。
- 第二行包含个整数,以空格分隔,表示盒子的容积。其中第个整数表示盒子的容积。保证对于,。
- 第三行包含一个整数,表示Naoki压碎的盒子数量。
- 接下来的行,每行包含一个整数,表示Naoki压碎的第个盒子是盒子。保证对于,。
部分分
该问题设有部分分。
- 对于满足和的数据集1,正确回答将获得15分。
- 对于满足的数据集2,正确回答将获得额外25分。
- 对于满足的数据集3,正确回答将获得额外30分。
输出
输出包含行。第一行输出使用所有盒子进行装箱时所需缓冲材料总量的最小值。接下来的行中,第行输出Naoki压碎个盒子后使用剩余所有盒子进行装箱时所需缓冲材料总量的最小值。请在输出末尾换行。
输入示例1
5 4
1 9 3 7 4
0
输出示例1
1
在此示例中,可以按照如图方式进行装箱,以使所需缓冲材料的总量为1。蓝色区域表示放入缓冲材料的部分。
此外,在此示例中,Naoki没有压碎任何盒子。
输入示例2
4 2
6 5 10 2
2
3
1
输出示例2
4
1
0
在此示例中,可以按照如图方式进行装箱。蓝色区域表示放入缓冲材料的部分。
输入示例3
7 3
2 12 3 13 7 17 1
4
4
3
1
6
输出示例3
7
6
6
5
0