题目描述
设备科里有 台老旧机器,第 台机器共有 个检修工位,第 个工位的检修时长为 。同一台机器的工位已按时长从短到长排好,即 。
现在要把 台机器合成一张合并检修单:每台机器各派出一个工位,一张单的总耗时就是这 个工位的时长之和。全部可能的合并检修单共有 张。
把所有合并检修单按总耗时从小到大排序,取最便宜的前 张,输出这 张单的总耗时之和。
输入格式
第一行两个整数 。
接下来 行,第 行第一个整数 ,随后 个整数 。
输出格式
一行一个整数:最便宜的 张合并检修单的总耗时之和。
样例 1
样例
输入
2 4 3 1 3 4 2 2 5
输出
20
两台机器共 张单,总耗时排序为 ,最便宜的四张是 ,和为 。
样例 2
输入
3 4 2 2 9 1 10 2 1 3
输出
70
三台机器共 张单,恰好取全部四张:,和为 。
数据范围
- ;
- 且 ;
- ;
- ,且每条序列非降:;
- 保证 ,即合并检修单的总张数不少于 。
单张合并检修单的总耗时不超过 ,答案不超过 :请使用 64 位整数(如 C++ 的 long long)计算与输出,本题不需要取模。