← Home
For problem statement at 1000-1999/1700-1799/1760-1769/1765/problemD.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1760-1769/1765/verifierD.go ends with All 80 tests passed can you fix the verifier? ```go
package main

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

func readInt(r *bufio.Reader) int64 {
	var n int64
	var c byte
	var err error
	for {
		c, err = r.ReadByte()
		if err != nil || (c >= '0' && c <= '9') {
			break
		}
	}
	if err != nil {
		return 0
	}
	n = int64(c - '0')
	for {
		c, err = r.ReadByte()
		if err != nil || c < '0' || c > '9' {
			break
		}
		n = n*10 + int64(c-'0')
	}
	return n
}

func main() {
	r := bufio.NewReaderSize(os.Stdin, 65536)
	n := int(readInt(r))
	if n == 0 {
		return
	}
	m := readInt(r)

	a := make([]int64, n)
	var sum_a int64
	for i := 0; i < n; i++ {
		a[i] = readInt(r)
		sum_a += a[i]
	}

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

	var S []int64
	var L_desc []int64
	for _, x := range a {
		if x*2 <= m {
			S = append(S, x)
		}
	}
	for i := len(a) - 1; i >= len(S); i-- {
		L_desc = append(L_desc, a[i])
	}

	var C []int64
	if len(S) > 0 {
		C = make([]int64, 0, len(S)+1)
		C = append(C, m-S[0])
		for i := 1; i < len(S); i++ {
			C = append(C, m-S[i])
		}
		C = append(C, m-S[len(S)-1])
	}

	M := 0
	i, j := 0, 0
	for i < len(L_desc) && j < len(C) {
		if L_desc[i] <= C[j] {
			M++
			i++
			j++
		} else {
			i++
		}
	}

	max_edges := 0
	if len(S) > 0 {
		max_edges = len(S) - 1 + M
	}

	ans := sum_a + int64(n) - int64(max_edges)
	fmt.Println(ans)
}
```