#include <bits/stdc++.h>
using namespace std;
using ll = long long ;
using ld = long double;
bool IsThisTimePossible(vector<ld> &pos , vector<ld> &vel , ld mid)
{
int n = pos.size();
vector<ld> start(n) , end(n);
for (int i = 0; i < n; i++)
{
start[i] = pos[i] - (vel[i] * mid);
end[i] = pos[i] + (vel[i] * mid);
}
if(*min_element(end.begin() , end.end()) >= *max_element(start.begin() , start.end()))
{
return true;
}
else;
{
return false;
}
}
int main()
{
int n; cin >>n; vector<ld> pos(n);vector<ld> vel(n);
for (int i = 0; i < n; i++)
{
cin >> pos[i] >> vel[i];
}
ld l = 0 , h = 1000000001 , mid;
for (int i = 0; i < 50; i++)
{
mid = (l+h)/2;
if(IsThisTimePossible(pos,vel,mid))
{
h = mid;
}
else
{
l = mid;
}
}
cout << fixed << setprecision(7) << mid;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nIDsKdXNpbmcgbGQgPSBsb25nIGRvdWJsZTsKIApib29sIElzVGhpc1RpbWVQb3NzaWJsZSh2ZWN0b3I8bGQ+ICZwb3MgLCB2ZWN0b3I8bGQ+ICZ2ZWwgLCBsZCBtaWQpCnsKICAgIGludCBuID0gcG9zLnNpemUoKTsKICAgIHZlY3RvcjxsZD4gc3RhcnQobikgLCBlbmQobik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBzdGFydFtpXSA9IHBvc1tpXSAtICh2ZWxbaV0gKiBtaWQpOwogICAgICAgIGVuZFtpXSA9IHBvc1tpXSArICh2ZWxbaV0gKiBtaWQpOwogICAgfQogICAgaWYoKm1pbl9lbGVtZW50KGVuZC5iZWdpbigpICwgZW5kLmVuZCgpKSA+PSAqbWF4X2VsZW1lbnQoc3RhcnQuYmVnaW4oKSAsIHN0YXJ0LmVuZCgpKSkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGVsc2U7CiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CiAKaW50IG1haW4oKQp7CiAgICBpbnQgbjsgY2luID4+bjsgdmVjdG9yPGxkPiBwb3Mobik7dmVjdG9yPGxkPiB2ZWwobik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gcG9zW2ldID4+IHZlbFtpXTsKICAgIH0KICAgIGxkIGwgPSAwICwgaCA9IDEwMDAwMDAwMDEgLCBtaWQ7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyBpKyspCiAgICB7CiAgICAgICAgbWlkID0gKGwraCkvMjsKICAgICAgICBpZihJc1RoaXNUaW1lUG9zc2libGUocG9zLHZlbCxtaWQpKQogICAgICAgIHsKICAgICAgICAgICAgaCA9IG1pZDsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbCA9IG1pZDsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig3KSA8PCBtaWQ7Cn0=