For problem statement at 0-999/400-499/440-449/442/problemC.txt this is a correct solution, but verifier at 0-999/400-499/440-449/442/verifierC.go ends with case 2 failed: expected 3375
got 4128
input:
8
1000 670 185 464 930 210 749 566
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func readInt(reader *bufio.Reader) int {
var res int
for {
c, err := reader.ReadByte()
if err != nil {
return 0
}
if c >= '0' && c <= '9' {
res = int(c - '0')
break
}
}
for {
c, err := reader.ReadByte()
if err != nil || c < '0' || c > '9' {
break
}
res = res*10 + int(c - '0')
}
return res
}
func main() {
reader := bufio.NewReader(os.Stdin)
n := readInt(reader)
if n == 0 {
return
}
ans := int64(0)
stack := make([]int, 0, n)
for i := 0; i < n; i++ {
x := readInt(reader)
stack = append(stack, x)
for len(stack) >= 3 {
m := len(stack)
if stack[m-3] >= stack[m-2] && stack[m-2] <= stack[m-1] {
if stack[m-3] < stack[m-1] {
ans += int64(stack[m-3])
} else {
ans += int64(stack[m-1])
}
stack[m-2] = stack[m-1]
stack = stack[:m-1]
} else {
break
}
}
}
sum := int64(0)
max1 := 0
max2 := 0
for _, val := range stack {
sum += int64(val)
if val > max1 {
max2 = max1
max1 = val
} else if val > max2 {
max2 = val
}
}
ans += sum - int64(max1) - int64(max2)
fmt.Println(ans)
}