#HK4955. 「EGOI2023」糖果

「EGOI2023」糖果

题目描述

题目译自 European Girls' Olympiad in Informatics 2023 Day2 T2. Candy

在古老的伊卡城,传说有一座富丽堂皇的宫殿,藏有令人难以想象的财富。宫殿内有一条走廊,摆放着 NN 个来自世界各地的糖果盒。路过的旅人可以随意拿取糖果,前提是用等重的黄金支付。

糖果盒从左到右编号为 00N1N-1。第 ii 个盒子中剩余 aia_i 单位糖果,其中 aia_i 是一个非负整数。

作为宫殿的守护者,你希望重新排列这些盒子,让装有更多糖果的盒子靠近入口。

你将获得数组 a0,a1,,aN1a_0, a_1, \ldots, a_{N-1} 以及数字 FFTT。在一次操作中,你可以交换数组 a0,a1,,aN1a_0, a_1, \ldots, a_{N-1} 中两个相邻的元素。你的任务是求出最少需要多少次操作,使数组前 FF 个元素的总和至少达到 TT

输入格式

第一行包含三个整数 N,F,TN, F, T

第二行包含 NN 个整数 a0,a1,,aN1a_0, a_1, \ldots, a_{N-1}

输出格式

如果无法通过操作达成目标,输出 NO

否则,输出一个整数,表示最少操作次数。

6 2 27
10 4 20 6 3 3

1

目标是使前两个元素总和至少为 2727。通过一次相邻元素交换即可实现:交换 442020。交换后,数组变为 10 20 4 6 3 3,前两个元素总和为 10+20=302710 + 20 = 30 \geq 27

6 5 5000000000
1000000000 1000000000 0 1000000000 1000000000 1000000000

3

目标是使第一个元素至少为 11。必须将 11 移动到数组开头,这需要三次交换。

3 2 100
20 30 60

NO

目标是使前两个元素总和至少为 100100。但最多只能达到 60+30=9060 + 30 = 90,因此不可能实现。

1 1 100
100

0

数据范围与提示

注意:输入的数字可能超出 32 位整数范围,如果使用 C++,请注意溢出问题。

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 66 N2N \leq 2 且对于 i=0,1,,N1i = 0, 1, \ldots, N-1ai100a_i \leq 100T109T \leq 10^9
22 1919 对于 i=0,1,,N1i = 0, 1, \ldots, N-1ai1a_i \leq 1
33 1616 N20N \leq 20
44 3030 对于 i=0,1,,N1i = 0, 1, \ldots, N-1ai100a_i \leq 100
55 2929 无附加限制