#define _USE_MATH_DEFINES #include #include #include #include #include #include //#include #include #include #include #include #include #include ///////// #define REP(i, x, n) for(int i = x; i < n; i++) #define rep(i,n) REP(i,0,n) #define P(p) cout<<(p)< ///////// typedef long long LL; typedef long double LD; ///////// using namespace::std; ///////// LL f(LL x,LL* a,LL* b,int N){ LL minV,maxV; minV = 0; maxV = 0; minV = a[0]+b[0]*x; rep(i,N){ maxV = max(maxV, a[i]+b[i]*x); minV = min(minV, a[i]+b[i]*x); } return maxV-minV; } int main(void){ std::cin.tie(0); std::ios::sync_with_stdio(false); std::cout << std::fixed;// //cout << setprecision(16);// int N; cin>>N; const int nmax = 1000; LL a[nmax],b[nmax]; rep(i,N){ cin>>a[i]>>b[i]; } // LL Left = 1; LL Right; LL Lmid,Rmid; LL x = 1; LL start = f(x,a,b,N); LL Lval,Rval; do{ x *= 2; Lval = f(x,a,b,N); }while(start > Lval); Left = 1; Right = x; do{ Lmid = (Left*2 + Right)/3; Rmid = (Left + Right*2)/3; Lval = f(Lmid,a,b,N); Rval = f(Rmid,a,b,N); if( Rval < Lval ){ Left = Lmid; }else{ Right = Rmid; } }while( Right-Left>2 ); Lval = f(Lmid,a,b,N); Rval = f(Rmid,a,b,N); if( Rval < Lval ){ P(Rmid); }else{ P(Lmid); } return 0; }