问题 E: 相位猛冲

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:35 解决:8

题目描述

(本题请使用c++作答)

X_X很喜欢玩玩具小车,这天他把n个小车(具有初速度)同时放在了一个长度为m的直线长赛道上。

在不发生碰撞的情况下,小车将会匀速直线前进;如果两个小车碰撞,它们的速度将会互换(不计小车长度)。

为了追求刺激,X_X又在赛道中安装了t个加(减?)速带(不计长度),如果小车在加速带上,那么它将会”相位猛冲”——使自身方向不变,速度的绝对值变为原速度的ki(0 < ki <= 100)倍。

出于安全考虑,X_X在赛道两端加装了防护栏,如果小车的速度小于等于p,那么小车就会以原速向另一端行驶,否则这个小车将会冲下赛道,在这个瞬间小车即被视为不在赛道上。



X_X希望你能告诉他,从他放下所有小车开始到赛道上没有小车至少需要多久,如果不存在赛道上没有小车的情况,那么输出-1

输入

第一行输入m(1 <= m <= 10000000)n(1 <= n <= 200000), t(0 <= t <= 100000)p(0 <= p <= 10000)四个整数

第二行输入n个整数,表示第i个小车的速度vi,速度为正表示向右行驶(1 <= abs(vi) <= 100)

第三行输入n个整数,表示第i个小车的初始位置x(0 <= xi <= m)

第四行输入t个正实数ki(0 < ki <= 100, 保证t个ki累乘之积小于等于10,请以long double类型储存变量)

第五行输入t个整数,表示加速带的位置y(0 < y < m)



保证加速带的位置互不相同。

输出

输出从X_X同时放下n个小车到赛道上没有小车至少需要的时间

由于浮点数运算较多,为规范输出,请在使用cout.precision(3);语句后直接输出答案。



如果不存在赛道上没有小车的情况,那么输出-1

样例输入 复制

9 3 1 5
-1 3 1
3 6 1
2  
1

样例输出 复制

9.5

提示

下图表示样例的初始情况,仅供参考


由于浮点数计算较多,建议使用long double类型保存浮点数



来源/分类