问题 E: 相位猛冲
题目描述
(本题请使用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个小车的初始位置xi (0 <= xi <= m)
第四行输入t个正实数ki(0 < ki <= 100, 保证t个ki累乘之积小于等于10,请以long double类型储存变量)
第五行输入t个整数,表示加速带的位置yi (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类型保存浮点数