← Home
For problem statement at 1000-1999/1500-1599/1500-1509/1508/problemA.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1500-1509/1508/verifierA.go ends with case 1 failed: expected 110100101010111110 got 10100101010111110
input:
1
6
101000100111
100010010110
100110000010
exit status 1 can you fix the verifier? ```go
package main

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

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	fmt.Fscan(reader, &t)

	for i := 0; i < t; i++ {
		var n int
		fmt.Fscan(reader, &n)
		s := make([]string, 3)
		for j := 0; j < 3; j++ {
			fmt.Fscan(reader, &s[j])
		}

		zeros := make([]int, 0, 3)
		ones := make([]int, 0, 3)

		for j := 0; j < 3; j++ {
			cnt0 := 0
			for _, c := range s[j] {
				if c == '0' {
					cnt0++
				}
			}
			if cnt0 >= n {
				zeros = append(zeros, j)
			} else {
				ones = append(ones, j)
			}
		}

		if len(zeros) >= 2 {
			solveMerge(writer, n, s[zeros[0]], s[zeros[1]], '0')
		} else {
			solveMerge(writer, n, s[ones[0]], s[ones[1]], '1')
		}
	}
}

func solveMerge(w *bufio.Writer, n int, a, b string, common byte) {
	pA, pB := 0, 0
	other := byte('1')
	if common == '1' {
		other = '0'
	}

	for k := 0; k < n; k++ {
		cntA := 0
		for a[pA] != common {
			cntA++
			pA++
		}
		cntB := 0
		for b[pB] != common {
			cntB++
			pB++
		}

		mx := cntA
		if cntB > cntA {
			mx = cntB
		}

		for x := 0; x < mx; x++ {
			w.WriteByte(other)
		}
		w.WriteByte(common)
		pA++
		pB++
	}
	w.WriteString(a[pA:])
	w.WriteString(b[pB:])
	w.WriteByte('\n')
}
```