← Home
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)
}
```