For problem statement at 0-999/200-299/240-249/241/problemC.txt this is a correct solution, but verifier at 0-999/200-299/240-249/241/verifierC.go ends with case 2 failed: expected 20 got 49
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
type Mirror struct {
v, a, b, pos int64
}
func main() {
reader := bufio.NewReader(os.Stdin)
var hl, hr, n int
if _, err := fmt.Fscan(reader, &hl, &hr, &n); err != nil {
return
}
mirrors := make([]Mirror, n)
for i := 0; i < n; i++ {
var v, a, b int64
var c string
fmt.Fscan(reader, &v, &c, &a, &b)
pos := int64(0)
if c == "T" {
pos = 100
}
mirrors[i] = Mirror{v, a, b, pos}
}
L := int64(100000)
maxScore := int64(0)
for m := int64(-2000000); m <= 2000000; m++ {
Ym := m * 100
if m%2 == 0 {
Ym += int64(hr)
} else {
Ym += int64(100 - hr)
}
D := Ym - int64(hl)
if D == 0 {
continue
}
valid := true
var currentScore int64 = 0
for i := 0; i < n; i++ {
mirror := &mirrors[i]
L_bound := mirror.a*D + L*(int64(hl)-mirror.pos)
R_bound := mirror.b*D + L*(int64(hl)-mirror.pos)
if D < 0 {
L_bound, R_bound = R_bound, L_bound
}
var min_k, max_k int64
if L_bound >= 0 {
min_k = (L_bound + 200*L - 1) / (200 * L)
} else {
min_k = L_bound / (200 * L)
}
if R_bound >= 0 {
max_k = R_bound / (200 * L)
} else {
max_k = (R_bound - 200*L + 1) / (200 * L)
}
hits := int64(0)
if max_k >= min_k {
hits = max_k - min_k + 1
}
if hits > 1 {
valid = false
break
}
if hits == 1 {
currentScore += mirror.v
}
}
if valid && currentScore > maxScore {
maxScore = currentScore
}
}
fmt.Println(maxScore)
}
```