B. The Meeting Place Cannot Be Changed

time limit per test

5 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

The main road in Bytecity is a straight line from south to north. Conveniently, there are coordinates measured in meters from the southernmost building in north direction.

At some points on the road there are n friends, and i-th of them is standing at the point xi meters and can move with any speed no greater than vi meters per second in any of the two directions along the road: south or north.

You are to compute the minimum time needed to gather all the n friends at some point on the road. Note that the point they meet at doesn't need to have integer coordinate.

Input

The first line contains single integer n (2 ≤ n ≤ 60 000) — the number of friends.

The second line contains n integers x1, x2, ..., xn (1 ≤ xi ≤ 109) — the current coordinates of the friends, in meters.

The third line contains n integers v1, v2, ..., vn (1 ≤ vi ≤ 109) — the maximum speeds of the friends, in meters per second.

Output

Print the minimum time (in seconds) needed for all the n friends to meet at some point on the road.

Your answer will be considered correct, if its absolute or relative error isn't greater than 10 - 6. Formally, let your answer be a, while jury's answer be b. Your answer will be considered correct if holds.

Examples

Input

3
7 1 3
1 2 1

Output

2.000000000000

Input

4
5 10 3 2
2 3 2 4

Output

1.400000000000

Note

In the first sample, all friends can gather at the point 5 within 2 seconds. In order to achieve this, the first friend should go south all the time at his maximum speed, while the second and the third friends should go north at their maximum speeds.

题意:在x轴上有很多人,这些人都有对应的最大移动速度,想要使所有人运动至同一点,求出最小运动时间。

/*
当然也可以三分,这里采用另一种二分时间的方法
耗费某一个时间时,求出最南边可以到达的点及最北端可以到达的点
当有交点时,说明都可以到达
*/
#include<bits/stdc++.h>
using namespace std;
const int MAXN=60000+100;
const double EPS=1e-6;
int x[MAXN],v[MAXN];
int main()
{
// freopen("data.in","r",stdin);
int n;
cin>>n;
int xss=0x3f3f3f3f,xnn=-1;
for(int i=0;i<n;i++){
cin>>x[i];
xss=min(xss,x[i]);
xnn=max(xnn,x[i]);
}
int vmin=0x3f3f3f3f,vmax=-1;
for(int i=0;i<n;i++){
cin>>v[i];
vmin=min(vmin,v[i]);
vmax=max(vmax,v[i]);
}
double l=0,r=(xnn-xss)*1.0/2/vmin+1;//初始化l与r缩小搜索范围,也可不初始化,直接给r一个大数即可
double res=0;
double mid;
double tmp;
while(fabs(r-l)>=EPS){
mid=(l+r)/2.0;
//cout<<fixed<<setprecision(6)<<mid<<endl;
double xn=0x3f3f3f3f,xs=-1;
for(int i=0;i<n;i++){
xs=max(xs,x[i]*1.0-v[i]*mid);
xn=min(xn,x[i]*1.0+v[i]*mid);
}
if(xn>xs){
r=mid;
}
else{
l=mid;
}
}
cout<<fixed<<setprecision(12)<<mid<<endl; }

codeforces#403—B题(二分,三分)的更多相关文章

  1. 第二次组队赛 二分&三分全场

    网址:CSUST 7月30日(二分和三分) 这次的比赛是二分&三分专题,说实话以前都没有接触过二分,就在比赛前听渊神略讲了下.......不过做着做着就对二分熟悉了,果然做题是学习的好方法啊~ ...

  2. Codeforces VP/补题小记 (持续填坑)

    Codeforces VP/补题小记 1149 C. Tree Generator 给你一棵树的括号序列,每次交换两个括号,维护每次交换之后的直径. ​ 考虑括号序列维护树的路径信息和,是将左括号看做 ...

  3. [Codeforces 1199C]MP3(离散化+二分答案)

    [Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...

  4. codeforces 578c - weekness and poorness - 三分

    2017-08-27 17:24:07 writer:pprp 题意简述: • Codeforces 578C Weakness and poorness• 给定一个序列A• 一个区间的poornes ...

  5. Codeforces Gym100543B 计算几何 凸包 线段树 二分/三分 卡常

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100543B.html 题目传送门 - CF-Gym100543B 题意 给定一个折线图,对于每一条 ...

  6. Codeforces Round #371 (Div. 2) D. Searching Rectangles 交互题 二分

    D. Searching Rectangles 题目连接: http://codeforces.com/contest/714/problem/D Description Filya just lea ...

  7. Codeforces Round #403 (Div. 2) B 三分 C dfs

    B. The Meeting Place Cannot Be Changed time limit per test 5 seconds memory limit per test 256 megab ...

  8. Codeforces 1104 D. Game with modulo-交互题-二分-woshizhizhang(Codeforces Round #534 (Div. 2))

    D. Game with modulo time limit per test 1 second memory limit per test 256 megabytes input standard ...

  9. CodeForces - 1059D——二分/三分

    题目 题目链接 简单的说,就是作一个圆包含所有的点且与x轴相切,求圆的最小半径 方法一 分析:求最小,对半径而言肯定满足单调性,很容易想到二分.我们二分半径,然后由于固定了与X轴相切,我们对于每一个点 ...

随机推荐

  1. 性能库 Oracle数据库 连接不上问题的解决

    今天性能库的centos 上面的oracle18c 数据库连接不上了 这里进行了一次简单处理 针对不同问题进行说明: 1. 实例时 blocked 的状态 问题现象: LSNRCTL> stat ...

  2. nodejs 和 js

    JavaScript组成:ECMAScript(定义这门语言的基础,比如语法.数据类型.结构以及一些内置对象等).DOM(基于ECMASCRIPT,扩展出来的用于操作页面元素的方法).BOM(基于EC ...

  3. 生成url的二维码图片

    <?php require_once "./phpqrcode.php"; //生成二维码 $img = \QRcode::png("https://www.bai ...

  4. python-day25(正式学习)

    目录 组合 多态 多态性 好处 封装 两个层面 property 组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象 组合是用来解决类与类之间代码冗余的问题 首先我们先写一个 ...

  5. mysql联合索引如何创建

    例如: CREATE TABLE `test` ('aaa' varchar(16) NOT NULL default '', 'bbb' varchar(16) NOT NULL default ' ...

  6. 在Ueditor的内容区添加一个下拉选框改变事件

    <script>html='';html=html+` <select name="" onchange='this.appendChild(document.g ...

  7. 使用 tablib 来自动化管理测试用例,其他的工具都不用学了

    你在学习 python 自动化测试吗?听过 requests 库吗?tablib 是 requests 库作者常年维护的一个可以操作 Excel 等多种文件格式,将他们变成一种通用数据集的第三方库. ...

  8. github项目多人进行合作开发,填坑记录

    1.Fork别人的github项目. Fork项目成功后,再进行把项目克隆到你本地.(我的项目已经克隆到本地了,右边是克隆下来的所有文件,除了 node_modules) git命令: git clo ...

  9. 弹出ifream

      top.$.jBox("iframe:"+'${ctx}/synopsis/hmlwxSynopsis/addItem', {title: "添加作品",w ...

  10. 缓存---CDN(内容分发网络)

    4.CDN   内容分发网络(content distribution network,CDN)是一种互联的网络系统,它利用更靠近用户的服务器从而更快更可靠的将静态资源分发给用户. cdn主要有以下优 ...