← Home
For problem statement at 1000-1999/1600-1699/1670-1679/1671/problemC.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1670-1679/1671/verifierC.go ends with test 5 failed: n=3 x=19 a=[3 14 15] expected=2 got=19 can you fix the verifier? package main

import (
	"bufio"
	"io"
	"os"
	"sort"
)

var data []byte
var idx int

func nextInt() int64 {
	for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
		idx++
	}
	var n int64
	for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
		n = n*10 + int64(data[idx]-'0')
		idx++
	}
	return n
}

func writeInt(w *bufio.Writer, x int64) {
	if x == 0 {
		w.WriteByte('0')
		return
	}
	var buf [20]byte
	i := len(buf)
	for x > 0 {
		i--
		buf[i] = byte('0' + x%10)
		x /= 10
	}
	w.Write(buf[i:])
}

func main() {
	data, _ = io.ReadAll(os.Stdin)
	t := int(nextInt())
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	for ; t > 0; t-- {
		n := int(nextInt())
		x := nextInt()
		a := make([]int64, n)
		for i := 0; i < n; i++ {
			a[i] = nextInt()
		}
		sort.Slice(a, func(i, j int) bool { return a[i] < a[j] })

		var ans int64
		var pref int64
		for i := 0; i < n; i++ {
			pref += a[i]
			k := int64(i + 1)
			if pref <= x {
				ans += (x-pref)/k + 1
			}
		}
		writeInt(out, ans)
		out.WriteByte('\n')
	}
}