void main(){ import std.stdio, std.string, std.conv, std.algorithm; import std.math; int n; rd(n); auto a=new long[](n), b=new long[](n); foreach(i; 0..n) rd(a[i], b[i]); long fun(long x){ long mx=0, mn=1_000_000_000_000_000_000; foreach(i; 0..n){ mx=max(mx, a[i]+b[i]*x); mn=min(mn, a[i]+b[i]*x); } return mx-mn; } long l=0, r=1_000_000_000+1; while(r-l>1){ auto m=(r+l)/2; fun(m)>fun(m+1) ? l : r = m; } writeln(r); } void rd(T...)(ref T x){ import std.stdio, std.string, std.conv; auto l=readln.split; assert(l.length==x.length); foreach(i, ref e; x){ e=l[i].to!(typeof(e)); } }