← Home
For problem statement at 1000-1999/1700-1799/1740-1749/1743/problemC.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1740-1749/1743/verifierC.go ends with case 3 failed
input:
2
10
0000111011
3 7 8 14 5 20 12 14 2 10
5
01111
18 6 7 4 4
expected:
70
35
got:
49
21 can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func max(a, b int64) int64 {
	if a > b {
		return a
	}
	return b
}

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	var t int
	fmt.Fscan(in, &t)
	for ; t > 0; t-- {
		var n int
		fmt.Fscan(in, &n)
		var s string
		fmt.Fscan(in, &s)
		a := make([]int64, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(in, &a[i])
		}

		const neg int64 = -1 << 60
		dp0, dp1 := int64(0), neg
		for i := 0; i < n; i++ {
			dp0n, dp1n := neg, neg
			if s[i] == '0' {
				dp0n = max(dp0, dp1)
			} else {
				dp0n = max(dp0n, dp0+a[i])
				dp1n = max(dp1n, dp0)
				dp0n = max(dp0n, dp1+a[i])
				dp0n = max(dp0n, dp1+a[i])
			}
			dp0, dp1 = dp0n, dp1n
		}
		ans := max(dp0, dp1)
		fmt.Fprintln(out, ans)
	}
}
```