← Home
For problem statement at 0-999/900-999/980-989/982/problemD.txt this is a correct solution, but verifier at 0-999/900-999/980-989/982/verifierD.go ends with test 2 failed: expected "4" got "5"
exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

type Pair struct {
	val int
	idx int
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n int
	fmt.Fscan(reader, &n)

	a := make([]Pair, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(reader, &a[i].val)
		a[i].idx = i
	}

	sort.Slice(a, func(i, j int) bool {
		return a[i].val < a[j].val
	})

	active := make([]bool, n)
	L := make([]int, n)
	counts := make([]int, n+1)

	numSegments := 0
	maxLoc := 0
	bestK := 0

	for i := 0; i < n; i++ {
		idx := a[i].idx
		leftLen := 0
		if idx > 0 && active[idx-1] {
			leftLen = L[idx-1]
		}
		rightLen := 0
		if idx < n-1 && active[idx+1] {
			rightLen = L[idx+1]
		}

		if leftLen > 0 {
			counts[leftLen]--
			numSegments--
		}
		if rightLen > 0 {
			counts[rightLen]--
			numSegments--
		}

		newLen := leftLen + rightLen + 1
		counts[newLen]++
		numSegments++

		active[idx] = true
		L[idx-leftLen] = newLen
		L[idx+rightLen] = newLen

		if counts[newLen] == numSegments {
			if numSegments > maxLoc {
				maxLoc = numSegments
				bestK = a[i].val + 1
			}
		}
	}

	fmt.Println(bestK)
}