For problem statement at 1000-1999/1800-1899/1880-1889/1882/problemE1.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1880-1889/1882/verifierE1.go ends with case 1 failed: expected 9
1 1
1 2
4 1
2 1
2 3
2 1
3 3
1 1
2 3 got 5
1 1
1 2
2 1
5 1
3 3
input:
5 3
3 1 4 2 5
3 2 1
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func solveSingle(p []int, n int, s int) []int {
A := make([]int, n+1)
A[0] = 0
for i := 1; i <= n; i++ {
A[i] = p[i-1]
}
T := make([]int, n+1)
for i := 0; i <= n; i++ {
T[i] = (i + s) % (n + 1)
}
ans := make([]int, 0)
for {
match := true
for i := 0; i <= n; i++ {
if A[i] != T[i] {
match = false
break
}
}
if match {
break
}
z := -1
for i := 0; i <= n; i++ {
if A[i] == 0 {
z = i
break
}
}
var x int
if T[z] == 0 {
for i := 0; i <= n; i++ {
if A[i] != T[i] {
x = A[i]
break
}
}
} else {
x = T[z]
}
y := -1
for i := 0; i <= n; i++ {
if A[i] == x {
y = i
break
}
}
dist := (y - z) % (n + 1)
if dist < 0 {
dist += n + 1
}
ans = append(ans, dist)
A[z], A[y] = A[y], A[z]
}
return ans
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, m int
if _, err := fmt.Fscan(reader, &n, &m); err != nil {
return
}
p := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &p[i])
}
q := make([]int, m)
for i := 0; i < m; i++ {
fmt.Fscan(reader, &q[i])
}
for s := 0; s <= 1; s++ {
for r := 0; r <= 1; r++ {
ansP := solveSingle(p, n, s)
ansQ := solveSingle(q, m, r)
if len(ansP)%2 == len(ansQ)%2 {
for len(ansP) < len(ansQ) {
ansP = append(ansP, 1, n)
}
for len(ansQ) < len(ansP) {
ansQ = append(ansQ, 1, m)
}
fmt.Fprintln(writer, len(ansP))
for i := 0; i < len(ansP); i++ {
fmt.Fprintf(writer, "%d %d\n", ansP[i], ansQ[i])
}
return
}
}
}
fmt.Fprintln(writer, "-1")
}