← Home
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)
}