AtCoder Beginner Contest 441 C

https://atcoder.jp/contests/abc441/tasks/abc441_c

問題が読み取りにくくてずっと誤解していたのですが、よくよく読んだらわかりました。これはどのカップに何mリットル入っているかはわかるので、上から選べばいいんですね。
Rでまとめて処理したら速くなるので、そうなるようにします。まず、Aを降順にソートしてBにします。それから最悪水が入っている分を除いてCにします。そして、大きいほうから足していけばいいので、累積和を求めます。累積和で最初にX以上になる場所を探せばいいですが、これもwhichでまとめて処理します。これでTRUEになるインデックスのvectorを得ます。これの最初が求める場所で、これに水の分のN-Kを足します。

v <- scan("stdin", numeric())

N <- as.integer(v[1])
K <- as.integer(v[2])
X <- v[3]
A <- v[4:(N+3)]

B <- sort(A, decreasing=TRUE)
C <- B[(N-K+1):N]
acc <- cumsum(C)
indices <- which(acc >= X)
if(length(indices) > 0) {
    result <- N - K + indices[1]
} else {
    result <- -1
}
cat(result, "\n")