For problem statement at 0-999/500-599/540-549/547/problemB.txt this is a correct solution, but verifier at 0-999/500-599/540-549/547/verifierB.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanner.Buffer(make([]byte, 1024*1024), 10*1024*1024)
if !scanner.Scan() {
return
}
n := 0
for _, b := range scanner.Bytes() {
n = n*10 + int(b-'0')
}
a := make([]int, n)
for i := 0; i < n; i++ {
scanner.Scan()
val := 0
for _, b := range scanner.Bytes() {
val = val*10 + int(b-'0')
}
a[i] = val
}
L := make([]int, n)
R := make([]int, n)
for i := 0; i < n; i++ {
L[i] = -1
R[i] = n
}
stack := make([]int, 0, n)
for i := 0; i < n; i++ {
for len(stack) > 0 && a[stack[len(stack)-1]] >= a[i] {
stack = stack[:len(stack)-1]
}
if len(stack) > 0 {
L[i] = stack[len(stack)-1]
}
stack = append(stack, i)
}
stack = stack[:0]
for i := n - 1; i >= 0; i-- {
for len(stack) > 0 && a[stack[len(stack)-1]] >= a[i] {
stack = stack[:len(stack)-1]
}
if len(stack) > 0 {
R[i] = stack[len(stack)-1]
}
stack = append(stack, i)
}
ans := make([]int, n+2)
for i := 0; i < n; i++ {
length := R[i] - L[i] - 1
if a[i] > ans[length] {
ans[length] = a[i]
}
}
for i := n; i >= 1; i-- {
if ans[i+1] > ans[i] {
ans[i] = ans[i+1]
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 1; i <= n; i++ {
if i > 1 {
out.WriteByte(' ')
}
fmt.Fprint(out, ans[i])
}
out.WriteByte('\n')
}