#993. 酒和水

酒和水

题目描述

NN 个杯子,每个杯子里都装有无色透明的液体。 具体来说,第 ii 个(1iN1 \le i \le N)杯子里装有 AiA_i 毫升的液体。 已知这些杯子中恰好有 KK 个装的是清酒(米酒),其余的装的是水。 然而,并不知道具体哪些杯子里装的是清酒。

高桥君可以选择一些(一个或多个)杯子并喝掉里面所有的液体。 为了保证无论哪些杯子里装的是清酒,他都至少能喝到 XX 毫升的清酒,请问他最少需要选择多少个杯子? 如果无论如何选择都无法保证达成目标,请输出 -1

输入格式

第一行包含三个整数 N,KN, KXX —— 分别表示杯子的总数、装有清酒的杯子数以及目标清酒量的最小值。

第二行包含 NN 个整数 A1,A2,,ANA_1, A_2, \dots, A_N —— 表示每个杯子中液体的体积。

输出格式

输出一行,一个整数,表示高桥君最少需要选择的杯子数量。如果无法满足条件,输出 -1

样例输入 1

3 2 5
10 6 8

样例输出 1

2

样例输入 2

2 1 8
6 10

样例输出 2

-1

样例输入 3

5 3 3000000000
1000000000 1000000000 1000000000 1000000000 1000000000

样例输出 3

5

说明

样例解释

  • 在第一个样例中,考虑高桥君选择第 11 杯和第 33 杯并喝掉的情况。 由于三个杯子中有两个装的是清酒,所以有以下三种可能的情况:
    • 如果第 11 杯和第 22 杯是清酒:他喝下了 1010 毫升的清酒和 88 毫升的水。
    • 如果第 11 杯和第 33 杯是清酒:他喝下了 1818 毫升的清酒。
    • 如果第 22 杯和第 33 杯是清酒:他喝下了 88 毫升的清酒和 1010 毫升的水。 因此,在所有可能的情况下,他都能喝到至少 55 毫升的清酒。 另一方面,如果只选择 11 个杯子,在不知道哪个是清酒的情况下,是无法保证一定能喝到至少 55 毫升清酒的。 所以输出 22
  • 在第二个样例中,如果第 11 杯里装的是清酒,那么无论选择哪些杯子,最多也只能喝到 66 毫升清酒,无法达到 88 毫升或以上。因此输出 -1

数据范围

对于所有测试点,保证:

  • 1KN3×1051 \le K \le N \le 3 \times 10^5
  • 1Ai1091 \le A_i \le 10^9
  • 1X3×10141 \le X \le 3 \times 10^{14}
  • 保证所有的输入数值均为整数。