← Home
```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n, k int
	var b int64
	if _, err := fmt.Fscan(in, &n, &k); err != nil {
		return
	}
	fmt.Fscan(in, &b)
	a := make([]int64, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &a[i])
	}

	asc := make([]int64, n)
	copy(asc, a)
	sort.Slice(asc, func(i, j int) bool { return asc[i] < asc[j] })

	pref := make([]int64, n+1)
	for i := 0; i < n; i++ {
		pref[i+1] = pref[i] + asc[i]
	}
	sumLargest := func(t int) int64 {
		if t <= 0 {
			return 0
		}
		if t > n {
			t = n
		}
		return pref[n] - pref[n-t]
	}

	s1 := sumLargest(k - 1)
	s2 := sumLargest(k)

	for i := 0; i < n; i++ {
		v := a[i]
		var S int64
		if k-1 <= 0 {
			S = 0
		} else {
			idxFirstGreater := sort.Search(n, func(p int) bool { return asc[p] > v })
			tGreater := n - idxFirstGreater
			if tGreater >= k-1 {
				S = s1
			} else {
				S = s2 - v
			}
		}
		need := b - v + 1
		if S >= need {
			fmt.Fprintln(out, i+1)
			return
		}
	}
	fmt.Fprintln(out, n)
}
```