← Home
For problem statement at 2000-2999/2100-2199/2150-2159/2153/problemC.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2150-2159/2153/verifierC.go ends with All 61 tests passed. can you fix the verifier? ```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(in, &t)
	for _ = range make([]int, t) {
		var n int
		fmt.Fscan(in, &n)
		a := make([]int64, n)
		var total_sum int64
		for i := 0; i < n; i++ {
			fmt.Fscan(in, &a[i])
			total_sum += a[i]
		}
		sort.Slice(a, func(i, j int) bool { return a[i] > a[j] })
		var ans int64 = 0
		found := false
		for k := 0; k <= n-3; k++ {
			rem_n := n - k
			if rem_n < 3 {
				break
			}
			rem_sum := total_sum
			for i := 0; i < k; i++ {
				rem_sum -= a[i]
			}
			freq := make(map[int64]int)
			for i := k; i < n; i++ {
				freq[a[i]]++
			}
			var odd_l []int64
			var even_l []int64
			for l, f := range freq {
				if f % 2 == 1 {
					odd_l = append(odd_l, l)
				} else if f > 0 {
					even_l = append(even_l, l)
				}
			}
			sort.Slice(odd_l, func(i, j int) bool { return odd_l[i] < odd_l[j] })
			sort.Slice(even_l, func(i, j int) bool { return even_l[i] < even_l[j] })
			r := len(odd_l)
			var sum_odd int64 = 0
			for _, v := range odd_l {
				sum_odd += v
			}
			var min_ex int64 = -1
			{
				ex_sum := sum_odd
				ex_num := r
				m := rem_n - ex_num
				if m%2 == 0 && m >= 4 {
					min_ex = ex_sum
				}
			}
			{
				var ex_sum int64
				var ex_num int
				ok := false
				if r > 0 {
					max_o := odd_l[r-1]
					ex_sum = sum_odd - max_o
					ex_num = r - 1
					ok = true
				} else if len(even_l) > 0 {
					min_e := even_l[0]
					ex_sum = min_e
					ex_num = 1
					ok = true
				}
				if ok {
					m := rem_n - ex_num
					if m%2 == 1 && m >= 3 {
						if min_ex == -1 || ex_sum < min_ex {
							min_ex = ex_sum
						}
					}
				}
			}
			{
				var ex_sum int64
				var ex_num int
				ok := false
				if r >= 2 {
					max1 := odd_l[r-1]
					max2 := odd_l[r-2]
					ex_sum = sum_odd - (max1 + max2)
					ex_num = r - 2
					ok = true
				} else if r == 1 && len(even_l) > 0 {
					only_o := odd_l[0]
					min_e := even_l[0]
					ex_sum = min_e + sum_odd - only_o
					ex_num = 1
					ok = true
				} else if r == 0 && len(even_l) >= 2 {
					min1 := even_l[0]
					min2 := even_l[1]
					ex_sum = min1 + min2
					ex_num = 2
					ok = true
				}
				if ok {
					m := rem_n - ex_num
					if m%2 == 0 && m >= 4 {
						if min_ex == -1 || ex_sum < min_ex {
							min_ex = ex_sum
						}
					}
				}
			}
			if min_ex != -1 {
				P := rem_sum - min_ex
				max_sel := a[k]
				if P > 2*max_sel {
					ans = P
					found = true
					break
				}
			}
		}
		if !found {
			ans = 0
		}
		fmt.Println(ans)
	}
}
```