← Home
For problem statement at 0-999/400-499/410-419/413/problemC.txt this is a correct solution, but verifier at 0-999/400-499/410-419/413/verifierC.go ends with All 100 tests passed can you fix the verifier? ```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	scanner.Scan()
	n, _ := strconv.Atoi(scanner.Text())
	scanner.Scan()
	m, _ := strconv.Atoi(scanner.Text())
	a := make([]int64, n)
	for i := 0; i < n; i++ {
		scanner.Scan()
		a[i], _ = strconv.ParseInt(scanner.Text(), 0, 64)
	}
	auctionIdx := make([]int, m)
	for i := 0; i < m; i++ {
		scanner.Scan()
		auctionIdx[i], _ = strconv.Atoi(scanner.Text())
	}
	var R int64 = 0
	isAuc := make([]bool, n+1)
	for _, b := range auctionIdx {
		isAuc[b] = true
	}
	for i := 1; i <= n; i++ {
		if !isAuc[i] {
			R += a[i-1]
		}
	}
	t := make([]int64, m)
	for i := 0; i < m; i++ {
		t[i] = a[auctionIdx[i]-1]
	}
	sort.Slice(t, func(i, j int) bool { return t[i] < t[j] })
	var ans int64 = 0
	for d := 0; d <= m; d++ {
		var sumAdd int64 = 0
		for j := d; j < m; j++ {
			sumAdd += t[j]
		}
		var base int64 = R + sumAdd
		var curr int64 = base
		ok := true
		for k := 1; k <= d; k++ {
			if curr <= t[k-1] {
				ok = false
				break
			}
			if k < d {
				curr *= 2
			}
		}
		if ok {
			var power int64 = 1 << uint(d)
			var sc int64 = base * power
			if sc > ans {
				ans = sc
			}
		}
	}
	fmt.Println(ans)
}
```