luogu#P11504. [NordicOI 2018] French Fries

[NordicOI 2018] French Fries

题目背景

译自 Nordic Olympiad in Informatics 2018 French Fries

题目描述

有无限多的人站成一排,这排人向左右两边都无限延伸。开始时选择了 PP 个不同的人,并给他们每人一根薯条。由于这有些不公平,所以每个人会同时将自己得到的薯条分成两半,一半给左边的人,一半给右边的人。然后他们重复这个过程,再进行 T1T - 1 次操作。如果一个人在经过这 TT 次操作后,拥有至少 LL 根薯条(其中 LL 不一定是整数),那么他就吃饱了。有多少人会吃饱?

输入格式

输入的第一行包含两个整数 PPTT1P31051 \leq P \leq 3 \cdot 10^51T51071 \leq T \leq 5 \cdot 10^7),以及一个浮点数 LL104L1010^{-4} \leq L \leq 10)。

第二行的输入包含 PP 个不同的整数:这些整数表示最初得到薯条的人的编号。所有的人的编号值都在 0010710^7 之间。

输出格式

输出一个整数:最终至少得到 LL 个薯条的人数。

如果答案 XX 在得到至少 0.8L0.8L 个薯条的人数和得到至少 1.2L1.2L 个薯条的人数之间,则视为正确答案。

2 1 0.74
0 2
1
4 100 0.1
1 2 3 11
13

提示

在第一个样例中,编号为 0022 的人最初各有一根薯条。然后他们将这些薯条分成两半,并把一半给相邻的人,编号为 1-133 的人将各得到 0.50.5 根薯条,而编号为 11 的人将得到 11 根薯条。吃饱的标准是 0.740.74 根薯条;因此,只有编号为 11 的人得到了足够的薯条。

在第二个样例中,答案 1313 是准确的,但任何介于 12121515 之间的输出都将被接受。


你的解法将在一组子任务上进行评分。每个子任务包含多个测试用例。要获得子任务的分数,你的解法必须通过子任务中的所有测试用例。

子任务 分数 限制条件
11 1010 P100P\leq 100T100T\leq 100,所有初始编号都在 00100100 之间
22 1414 P500P\leq 500T100T\leq 100
33 1717 P3105P\leq 3\cdot 10^5T100T\leq 100
44 1313 P100P\leq 100T105T\leq 10^5
55 2020 P500P\leq 500T5107T\leq 5\cdot 10^7
66 2626 P3105P\leq 3\cdot 10^5T5107T\leq 5\cdot 10^7