← Home
For problem statement at 1000-1999/1200-1299/1210-1219/1211/problemB.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1210-1219/1211/verifierB.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func max(a, b int64) int64 {
	if a > b {
		return a
	}
	return b
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int64 {
		for idx < len(data) && (data[idx] == ' ' || data[idx] == '\n' || data[idx] == '\r' || data[idx] == '\t') {
			idx++
		}
		var sign int64 = 1
		if data[idx] == '-' {
			sign = -1
			idx++
		}
		var val int64
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int64(data[idx]-'0')
			idx++
		}
		return val * sign
	}

	n := int(nextInt())
	a := make([]int64, n+1)
	for i := 1; i <= n; i++ {
		a[i] = nextInt()
	}

	suf := make([]int64, n+2)
	for i := n; i >= 1; i-- {
		suf[i] = max(suf[i+1], a[i])
	}

	pref := int64(0)
	ans := int64(1 << 62)
	nn := int64(n)

	for r := 0; r < n; r++ {
		q := max(pref, suf[r+1])
		cur := q*nn + int64(r)
		if cur < ans {
			ans = cur
		}
		v := a[r+1] - 1
		if v > pref {
			pref = v
		}
	}

	out := bufio.NewWriter(os.Stdout)
	fmt.Fprint(out, ans)
	out.Flush()
}