package main import ( "fmt" ) func min(x, y int64) int64 { if y < x { return y } return x } func max(x, y int64) int64 { if y > x { return y } return x } const inf64 = 1 << 62 func main() { var N int var A, B [1010]int64 fmt.Scan(&N) for i := 0; i < N; i++ { fmt.Scan(&A[i], &B[i]) } f := func(x int64) int64 { var maxF, minF int64 minF, maxF = inf64, -1 for i := 0; i < N; i++ { g := A[i] + B[i]*int64(x) maxF = max(g, maxF) minF = min(g, minF) } return maxF - minF } var l, r int64 l, r = 1, 1<<32 for i := 0; i < 64; i++ { d := r - l d2 := d / 2 m := l + d2 switch { case f(l) > f(r): l = m case f(l) < f(r): r = m } } if f(r) < f(l) { l = r } fmt.Println(l) }