For problem statement at 0-999/300-399/300-309/301/problemB.txt this is a correct solution, but verifier at 0-999/300-399/300-309/301/verifierB.go ends with passed 100/100 tests can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func abs(x int64) int64 {
if x < 0 {
return -x
}
return x
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
var n int
var d int64
fmt.Fscan(in, &n, &d)
a := make([]int64, n)
for i := 1; i <= n-2; i++ {
fmt.Fscan(in, &a[i])
}
x := make([]int64, n)
y := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &x[i], &y[i])
}
const INF int64 = 1 << 62
dist := make([]int64, n)
used := make([]bool, n)
for i := 0; i < n; i++ {
dist[i] = INF
}
dist[0] = 0
for {
u := -1
best := INF
for i := 0; i < n; i++ {
if !used[i] && dist[i] < best {
best = dist[i]
u = i
}
}
if u == -1 {
break
}
used[u] = true
if u == n-1 {
break
}
for v := 0; v < n; v++ {
if used[v] || v == u {
continue
}
w := (abs(x[u]-x[v]) + abs(y[u]-y[v]))*d - a[u]
if dist[u]+w < dist[v] {
dist[v] = dist[u] + w
}
}
}
fmt.Fprintln(out, dist[n-1])
}