锯木厂选址
题号:NC50546
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

从山顶上到山底下沿着一条直线种植了n棵老树。当地的政府决定把他们砍下来。为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂。
木材只能朝山下运。山脚下有一个锯木厂。另外两个锯木厂将新修建在山路上。你必须决定在哪里修建这两个锯木厂,使得运输的费用总和最小。假定运输每公斤木材每米需要一分钱。
你的任务是编写一个程序,读入树的个数和他们的重量与位置,计算最小运输费用。

输入描述:

输入的第一行为一个正整数n,表示树的个数。树从山顶到山脚按照标号。
接下来n行,每行有两个整数w_id_i。分别表示第i棵树的重量(公斤为单位)和第i棵树和第i+1棵树之间的距离。最后一个数d_n,表示第n棵树到山脚的锯木厂的距离。

输出描述:

输出仅一个数,表示最小的运输费用。
示例1

输入

复制
9
1 2
2 1
3 3
1 1
3 2
1 6
2 1
1 2
1 1

输出

复制
26

说明

下图展示了对于样例输入的最佳伐木场设置位置,树木用一个圆表示,伐木场用黑色标出。结果为: