#C1005. 宴会后厨

宴会后厨

题目描述

星桥餐厅今晚要准备一场大型宴会。后厨共有 NN 道菜需要完成,第 ii 道菜总共需要 AiA_i 小时的处理时间。

为了保证出品稳定,每道菜都必须至少由 KK 名不同厨师参与。若某名厨师参与某道菜,他在这道菜上花费的时间必须是正整数小时;同一道菜上所有参与厨师的用时之和必须恰好等于这道菜需要的 AiA_i 小时。

餐厅可以从 MM 名临时厨师中选择若干名雇佣。第 jj 名厨师最多可以工作 BjB_j 小时。只要雇佣了这名厨师,无论他实际工作多久,餐厅都必须支付 BjB_j 小时的报酬。

你需要选择一批厨师,并安排他们完成所有菜品。目标是在可行的前提下,使被雇佣厨师“拿到报酬但没有实际工作”的总小时数最小。

更形式化地说,若雇佣的厨师集合为 SS,并设第 jj 名厨师实际工作总时长不超过 BjB_j,所有菜品的总工作量为 i=1NAi\sum_{i=1}^N A_i,则需要最小化:

jSBji=1NAi\sum_{j\in S} B_j-\sum_{i=1}^N A_i。

若无论如何都无法完成所有菜品,请输出 Impossible

输入格式

第一行包含三个正整数 N,M,KN,M,K,分别表示菜品数量、可雇佣厨师数量,以及每道菜至少需要的厨师人数。

第二行包含 NN 个整数 A1,A2,,ANA_1,A_2,\ldots,A_N

第三行包含 MM 个整数 B1,B2,,BMB_1,B_2,\ldots,B_M

输出格式

如果无法完成所有菜品,输出一行 Impossible

否则输出一行一个整数,表示最少有多少小时的报酬没有对应实际工作。

样例 1 输入

1 2 2
6
4 5

样例 1 输出

3

样例 1 解释

唯一一道菜需要至少两名厨师参与,因此两名厨师都必须雇佣。总报酬为 4+5=94+5=9 小时,实际菜品工作量为 66 小时,所以答案为 33

样例 2 输入

2 3 2
2 1
2 2 2

样例 2 输出

Impossible

样例 2 解释

第二道菜只需要 11 小时,但它必须由至少 22 名厨师参与;每名参与厨师至少工作 11 小时,因此不可能完成。

样例 3

见选手目录下的 kitchen/kitchen3.inkitchen/kitchen3.ans

该样例满足 1M21\le M\le 2 的约束条件。

样例 4

见选手目录下的 kitchen/kitchen4.inkitchen/kitchen4.ans

该样例满足 1M151\le M\le 15 的约束条件。

样例 5

见选手目录下的 kitchen/kitchen5.inkitchen/kitchen5.ans

该样例满足 K=1K=1 的约束条件。

样例 6

见选手目录下的 kitchen/kitchen6.inkitchen/kitchen6.ans

该样例满足 1N,M,K,Ai,Bj401\le N,M,K,A_i,B_j\le 40 的约束条件。

样例 7

见选手目录下的 kitchen/kitchen7.inkitchen/kitchen7.ans

该样例满足所有测试点的通用约束条件。

数据范围

对于所有测试数据,均满足:

  • 1N,M,K3001\le N,M,K\le 300
  • 1Ai,Bj3001\le A_i,B_j\le 300

本题共 5050 个测试点,每个测试点 22 分。

测试点编号 分值 约束条件
181\sim 8 1616 1N,K3001\le N,K\le 3001M21\le M\le 2
9159\sim 15 1414 1N,K3001\le N,K\le 3001M151\le M\le 15
162716\sim 27 2424 K=1K=1
283728\sim 37 2020 1N,M,K,Ai,Bj401\le N,M,K,A_i,B_j\le 40
385038\sim 50 2626 无额外限制