For problem statement at 1000-1999/1500-1599/1530-1539/1538/problemG.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1530-1539/1538/verifierG.go ends with all tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func ceilDiv(n, d int64) int64 {
if d < 0 {
d = -d
n = -n
}
if n >= 0 {
return (n + d - 1) / d
}
return n / d
}
func floorDiv(n, d int64) int64 {
if d < 0 {
d = -d
n = -n
}
if n >= 0 {
return n / d
}
return -(((-n) + d - 1) / d)
}
func feasible(x, y, a, b, k int64) bool {
if a == b {
if a == 0 {
return false
}
return k <= min(x/a, y/a)
}
if a > b {
a, b = b, a
}
d := b - a
L := ceilDiv(b*k-x, d)
if L < 0 {
L = 0
}
U := floorDiv(y-a*k, d)
if U > k {
U = k
}
return L <= U
}
func min(a, b int64) int64 {
if a < b {
return a
}
return b
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
fmt.Fscan(in, &t)
for ; t > 0; t-- {
var x, y, a, b int64
fmt.Fscan(in, &x, &y, &a, &b)
hi := (x + y) / (a + b)
var l, r int64 = 0, hi
var ans int64 = 0
for l <= r {
m := (l + r) / 2
if feasible(x, y, a, b, m) {
ans = m
l = m + 1
} else {
r = m - 1
}
}
fmt.Fprintln(out, ans)
}
}