#P16305. [Ucpc2022初赛]信件配送
[Ucpc2022初赛]信件配送
题目描述
在 UCPC 中学,给其他班级的朋友寄信非常流行。
学校共有 个班级,编号为 到 。各班教室沿一条很长的走廊按班级编号顺序排列。第 个班级教室的位置用整数 表示,即它到走廊起点的距离。
东奎认为这是一个很好的商机,于是设计了一项统一送信服务。学生通过应用提交送信请求,所有信件会在课间集中配送。
共有 个送信请求,编号为 到 。第 个请求由一对班级编号 表示:信件需要从班级 送往班级 。
为了完成配送,东奎从每个班级雇用了一名配送员。东奎需要把所有送信请求分配给这些配送员,并为每名配送员指定处理请求的顺序。规则如下:
- 每名配送员必须按照东奎指定的顺序配送信件;
- 为避免信件混淆,配送员一次最多携带一封信;
- 配送员从自己班级的教室出发;
- 完成分配给自己的全部配送任务后,配送员必须返回自己的班级上课;
- 每名配送员获得的报酬,等于他从自己的教室出发、按指定顺序完成所有任务并返回教室所需的最短总移动距离;
- 没有被分配任务的配送员不获得报酬。
例如,假设有 个班级,教室之间的间距均为 ,两个请求依次为 和 。
若把第 2 个请求交给 1 班配送员,把第 1 个请求交给 3 班配送员,则两人的移动距离分别为 和 ,总报酬为 。

图 I.1:总报酬为 8 的分配方式
若把两个请求都交给 1 班配送员,并按第 2、1 个请求的顺序配送,则总移动距离为 。

图 I.2:总报酬为 6 的分配方式
在这个例子中,后者是最优方案。
请找出一种使所有配送员总报酬最小的任务分配与配送顺序。
输入格式
第一行包含两个整数 。
第二行包含 个严格递增的整数 ,其中 表示第 个班级教室的位置。
接下来 行描述送信请求。第 行包含两个整数 ,表示第 个请求需要把信件从班级 送到班级 。
输出格式
第一行输出东奎需要支付的最小总报酬。
接下来输出 行。第 行描述 班配送员的任务:
- 先输出分配给该配送员的请求数量 ;
- 再按实际配送顺序输出这 个请求的编号。
若某名配送员没有任务,只输出 0。
若存在多种最优方案,输出任意一种即可。
数据范围
- ;
- ;
- ,且所有 两两不同并严格递增;
- ;
- 。
样例
输入
4 2
1 2 3 4
4 2
1 3
输出
6
2 2 1
0
0
0