题目描述
小 Y 和小 Z 打算合作送快递!
街道可以抽象成一条数轴,一开始小 Y 和小 Z 都在原点。
一共有 n 个时刻的快递任务,只有完成了前一个送快递任务才可以去完成下一个。
第 i 个时刻,小 Y 和小 Z 中的一个人要将快递送往位置 ki,送完快递后,那个人将停留在位置 ki。
请问如何分配二人送快递的任务才能使得两人送快递走过的总路程之和最小?
输入格式
从文件 express.in
中读入数据。
第一行一个 n 表示任务个数。
接下来一行 n 个整数表示 ki。
输出格式
输出到文件 express.out
中。
输出一行一个整数表示答案。
样例输入 1
5
4 6 3 4 7
样例输出 1
11
样例输入 2
10
10 16 20 17 8 7 14 12 19 6
样例输出 2
45
样例 3
见选手目录下的 express/ex_express3.in
和 express/ex_express3.out
。
样例 4
见选手目录下的 express/ex_express4.in
和 express/ex_express4.out
。
样例解释
对于第一个样例,可以安排小 Y 去送第 1,2,5 个时刻的任务,走过的总路程为 |4−0|+|6−4|+|7−6|=7;剩下的安排小 Z 去送,走过的总路程为 |3−0|+|4−3|=4。二人走过的总路程为 11,可以证明这是最小的总路程。
测试点约束
对于所有测试点 1≤n≤106,1≤ai≤109。
测试点编号 | n≤ | 特殊性质 |
---|---|---|
1,2,3,4 | 20 | / |
5,6 | 100 | / |
7,8,9,10 | 1000 | / |
11,12,13,14 | 105 | / |
15,16 | 106 | 1≤ai≤50 |
17,18,19,20 | 106 | / |