#P9468. [EGOI 2023] Candy / 糖果

    ID: 10667 远端评测题 3000ms 1024MiB 尝试: 2 已通过: 2 显示难度普及+/提高− 上传者: 标签>2023O2优化EGOI(欧洲/女生)

[EGOI 2023] Candy / 糖果

背景

Day 2 Problem B.

题面译自 EGOI2023 candy。

CC BY-SA 3.0

题目描述

在伊卡古城,据说有一座宫殿,其财富超乎想象。在其中,一个走廊中有 NN 盒来自世界各地的糖果。路过的旅行者只要用黄金支付糖果的重量,就可以拿走任意多的糖果。

装糖果的盒子被从左到右编号为 00 到 N−1N-1。在盒子 ii 中,剩余有 aia_i 单位的糖果,其中 aia_i 是一个非负整数。

作为宫殿的守护者,你需要移动这些盒子,使得有很多糖果的盒子更靠近入口。

你已知数组 a0,a1,⋯ ,aN−1a_0,a_1,\cdots,a_{N-1},以及整数 FF 和 TT。在一次操作中,你被允许交换 a0,a1,⋯ ,aN−1a_0,a_1,\cdots,a_{N-1} 中的任意两个相邻元素。要使得数组前 FF 个元素的和至少为 TT,至少需要多少次操作?

输入格式

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

第二行 NN 个整数 a0,a1,⋯ ,aN−1a_0,a_1,\cdots,a_{N-1}。

输出格式

如果不可能达成目标,输出 NO。

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

6 2 27
10 4 20 6 3 3
1
6 5 5000000000
1000000000 1000000000 0 1000000000 1000000000 1000000000
3
3 2 100
20 30 60
NO
1 1 100
100
0

提示

样例 11 解释

在样例 11 中,前两个元素的和应当至少为 2727。一次相邻元素的交换就可以达成目标:交换 44 和 2020。在这次交换后,数组变成 10 20 4 6 3 3,前两个元素的和为 10+20=30≥2710+20=30\ge 27。


样例 22 解释

在样例 22 中,这个 00 必须一路移动到数组末尾;这需要 33 次交换。


样例 33 解释

在样例 33 中,不可能使得前两个元素和至少为 100100;我们能做到的最好结果是 60+30=9060+30=90。


数据范围

对于全部数据,1≤N≤1001\le N\le 100,1≤F≤N1\le F\le N,0≤T≤10110\le T\le 10^{11},0≤ai≤1090\le a_i\le 10^9。

  • 子任务一(66 分):N≤2N\le 2,ai≤100a_i\le 100,T≤109T\le 10^9。
  • 子任务二(1919 分):ai≤1a_i\le 1。
  • 子任务三(1616 分):N≤20N\le 20。
  • 子任务四(3030 分):ai≤100a_i\le 100。
  • 子任务五(2929 分):无特殊限制。

提示

答案可能不在 3232 位整型范围内,如果你使用 C++ 语言,请注意溢出的可能。