#C1005. 宴会后厨
宴会后厨
题目描述
星桥餐厅今晚要准备一场大型宴会。后厨共有 道菜需要完成,第 道菜总共需要 小时的处理时间。
为了保证出品稳定,每道菜都必须至少由 名不同厨师参与。若某名厨师参与某道菜,他在这道菜上花费的时间必须是正整数小时;同一道菜上所有参与厨师的用时之和必须恰好等于这道菜需要的 小时。
餐厅可以从 名临时厨师中选择若干名雇佣。第 名厨师最多可以工作 小时。只要雇佣了这名厨师,无论他实际工作多久,餐厅都必须支付 小时的报酬。
你需要选择一批厨师,并安排他们完成所有菜品。目标是在可行的前提下,使被雇佣厨师“拿到报酬但没有实际工作”的总小时数最小。
更形式化地说,若雇佣的厨师集合为 ,并设第 名厨师实际工作总时长不超过 ,所有菜品的总工作量为 ,则需要最小化:
若无论如何都无法完成所有菜品,请输出 Impossible。
输入格式
第一行包含三个正整数 ,分别表示菜品数量、可雇佣厨师数量,以及每道菜至少需要的厨师人数。
第二行包含 个整数 。
第三行包含 个整数 。
输出格式
如果无法完成所有菜品,输出一行 Impossible。
否则输出一行一个整数,表示最少有多少小时的报酬没有对应实际工作。
样例 1 输入
1 2 2
6
4 5
样例 1 输出
3
样例 1 解释
唯一一道菜需要至少两名厨师参与,因此两名厨师都必须雇佣。总报酬为 小时,实际菜品工作量为 小时,所以答案为 。
样例 2 输入
2 3 2
2 1
2 2 2
样例 2 输出
Impossible
样例 2 解释
第二道菜只需要 小时,但它必须由至少 名厨师参与;每名参与厨师至少工作 小时,因此不可能完成。
样例 3
见选手目录下的 kitchen/kitchen3.in 与 kitchen/kitchen3.ans。
该样例满足 的约束条件。
样例 4
见选手目录下的 kitchen/kitchen4.in 与 kitchen/kitchen4.ans。
该样例满足 的约束条件。
样例 5
见选手目录下的 kitchen/kitchen5.in 与 kitchen/kitchen5.ans。
该样例满足 的约束条件。
样例 6
见选手目录下的 kitchen/kitchen6.in 与 kitchen/kitchen6.ans。
该样例满足 的约束条件。
样例 7
见选手目录下的 kitchen/kitchen7.in 与 kitchen/kitchen7.ans。
该样例满足所有测试点的通用约束条件。
数据范围
对于所有测试数据,均满足:
- ;
- 。
本题共 个测试点,每个测试点 分。
| 测试点编号 | 分值 | 约束条件 |
|---|---|---|
| , | ||
| , | ||
| 无额外限制 |