#611. 工序安排 Job Processing

工序安排 Job Processing

题目描述

一家工厂的流水线正在生产一种产品,这需要两种操作:操作A\red A和操作B\red B。每个操作只有一些机器能够完成。

img

上图显示了按照下述方式工作的流水线的组织形式。A\red A型机器从输入库接受工件,对其施加操作A\red A,得到的中间产品存放在缓冲库。B\red B型机器从缓冲库接受中间产品,对其施加操作B\red B,得到的最终产品存放在输出库。所有的机器平行并且独立地工作,每个库的容量没有限制。每台机器的工作效率可能不同,一台机器完成一次操作需要一定的时间。

给出每台机器完成一次操作的时间,计算完成A\red A操作的时间总和的最小值,和完成B\red B操作的时间总和的最小值。

输入格式

第一行 三个用空格分开的整数:N\red N,工件数量 (1<=N<=1000)\red{(1<=N<=1000)};M1\red{M1}A\red A型机器的数量 (1<=M1<=30)\red{(1<=M1<=30)};M2\red{M2}B\red B型机器的数量 (1<=M2<=30)\red{(1<=M2<=30)}

第二行…等 M1\red{M1}个整数(表示A\red A型机器完成一次操作的时间,1..20\red{1..20}),接着是M2\red{M2}个整数(B\red B型机器完成一次操作的时间,1..20\red{1..20}

输出格式

只有一行。输出两个整数:完成所有A\red A操作的时间总和的最小值,和完成所有B\red B操作的时间总和的最小值(A\red A操作必须在B\red B操作之前完成)。

样例

输入样例

5 2 3
1 1 3 1 4

输出样例

3 5