For problem statement at 1000-1999/1200-1299/1290-1299/1292/problemE.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1290-1299/1292/verifierE.go ends with mismatch on case 1
input:
3
5
rqpte
5
hiwhx
4
obpx
expected:rqpte
hiwhx
obpx
actual:? CC
? CH
? CO
? HO
? OO
! OHH can you fix the verifier? ```go
package main
import (
"fmt"
)
func main() {
var n int
if _, err := fmt.Scan(&n); err != nil {
return
}
ans := make([]byte, n+1)
for i := 1; i <= n; i++ {
ans[i] = '?'
}
query := func(s string) []int {
fmt.Printf("? %s\n", s)
var k int
fmt.Scan(&k)
res := make([]int, k)
for i := 0; i < k; i++ {
fmt.Scan(&res[i])
}
return res
}
pairs := []string{"CC", "CH", "CO", "HO", "OO"}
for _, p := range pairs {
res := query(p)
for _, pos := range res {
ans[pos] = p[0]
ans[pos+1] = p[1]
}
}
for i := 2; i <= n-1; i++ {
if ans[i] == '?' {
ans[i] = 'H'
}
}
if n >= 4 {
if ans[1] == '?' && ans[n] == '?' {
allH := true
for i := 2; i <= n-1; i++ {
if ans[i] != 'H' {
allH = false
break
}
}
if allH {
s := ""
for i := 0; i < n-1; i++ {
s += "H"
}
res := query(s)
ans[1] = 'O'
ans[n] = 'C'
for _, pos := range res {
if pos == 1 {
ans[1] = 'H'
}
if pos == 2 {
ans[n] = 'H'
}
}
} else {
if n >= 5 {
s1 := "H" + string(ans[2:5])
res1 := query(s1)
ans[1] = 'O'
for _, pos := range res1 {
if pos == 1 {
ans[1] = 'H'
}
}
s2 := string(ans[n-3:n]) + "C"
res2 := query(s2)
ans[n] = 'H'
for _, pos := range res2 {
if pos == n-3 {
ans[n] = 'C'
}
}
} else {
s2 := string(ans[2:4]) + "C"
res2 := query(s2)
ans[4] = 'H'
for _, pos := range res2 {
if pos == 2 {
ans[4] = 'C'
}
}
ans[1] = 'O'
}
}
} else if ans[1] == '?' {
maxLen := 4
if n < 4 {
maxLen = n
}
s := "H" + string(ans[2:1+maxLen])
res := query(s)
ans[1] = 'O'
for _, pos := range res {
if pos == 1 {
ans[1] = 'H'
}
}
} else if ans[n] == '?' {
minPos := n - 3
if minPos < 1 {
minPos = 1
}
s := string(ans[minPos:n]) + "C"
res := query(s)
ans[n] = 'H'
for _, pos := range res {
if pos == minPos {
ans[n] = 'C'
}
}
}
} else {
if ans[1] == '?' {
ans[1] = 'O'
}
if n >= 2 && ans[n] == '?' {
ans[n] = 'H'
}
}
fmt.Printf("! %s\n", string(ans[1:]))
}
```