【问题描述】
现给我们n个区间[l1,r1] [l2, r2],…,[ln, rn],对于所有的区间都满足区间的左边界严格小于右边界,且区间的所有端点都是不同的。即对于任意第i个区间,都满足: li<ri,并且任意两个区间的端点都是不同的。
同时,给我们n个区间单位长度的权重c1,c2,….,cn,第i个区间每单位长度的权重为ci。因此,第i个区间的权值为ci *(ri−li),即第i个区间的权值为该区间的单位长度的权重ci乘以该区间的长度ri−li。
但是作为一名小学生,你不太喜欢太大的权值。所以,你希望让所有区间的权值之和尽可能小。为了实现上述目标,你可以执行以下三个操作:
(1)你可以按任意顺序重新排列数组l中的元素;
(2)你可以按任意顺序重新排列数组r中的元素;
(3)你可以按任意顺序重新排列数组c中的元素。
但是,在执行上述所有操作之后,你必须确保每个区间仍然有效(即,对于每个i, li<ri必须成立)。
请问,在执行上述操作之后,所有n个区间的权值之和的最小值是多少?
第一行为一个整数n(1<=n<=100000): 为区间的数目。
第二行为n个整数l1,l2,……,ln(1<=li<=200000): 为n个区间的左端点。
第三行为n个整数r1,r2,……,rn(1<=ri<=200000): 为n个区间的右端点。
测试数据确保,{l1,l2,……,ln,r1,r2,……,rn}中的任意2个整数都是不同的。
第四行为n个整数c1,c2,……,cn(1<=ci<=1e7): 为n个区间的单位权值。
【样例解释】
对于第一个测试样例,可以重排为:
l=[8,3];
r=[23,12];
c=[100,100]
此时,两个区间的权值之和为:100*(23-8) + 100*(12-3)=2400,这已经是权值之和的最小值了,即无论我们如何重排上述三个数组l,r和c,计算得到的区间权值之和都不可能比2400更小。
【数据范围约定】
20%的数据,n≤10,li, ri ≤100, ci ≤1000
50%的数据,n≤100, li, ri ≤1000, ci ≤1000
70%的数据,n≤10000, li, ri ≤20000, ci ≤2e5
100%的数据,n≤100000, li, ri ≤200000, ci ≤1e7