#P9207. 灭罪「正直者之死」

灭罪「正直者之死」

题目背景

正直的人,坚强不屈的人,刚正不阿的人。

大约这样的人会处处吃亏吧,不过这样的观点大约是从欺骗者的眼光里看到的。正直的人,即使是在死后,也是最为人尊敬的吧。

题目描述

有一台计算器,使用 kk 位的带符号整型来对数字进行存储。也就是说,一个变量能够表示的范围是 [2k1,2k1)[-2^{k-1},2^{k-1})。现在我们希望使用该计算器计算一系列数 a1,a2,,ana_1,a_2,\cdots,a_n 的和。计算的伪代码如下:

由于奇怪的特性,如果两个变量在相加时得到的结果在 [2k1,2k1)[-2^{k-1},2^{k-1}) 之外,即发生了溢出,那么这台计算器就会卡死,再也无法进行计算了。

为了防止这样的事情发生,一个变通的方法是更改 aia_i 的排列顺序。容易发现这样不会改变计算出的和的值。

不过,可能不存在一种方案,使得计算出这 nn 个数并且计算机不爆炸。但我们还是希望,计算出尽量多的数字的和。

输入格式

第一行有两个整数 n,kn,k,分别表示元素个数和整型位数。

第二行有 nn 个整数 a1,a2,,ana_1,a_2,\cdots,a_n

输出格式

共一行一个整数,表示最多能将多少个数字计算出和。

3 3
1 2 3

2

10 4
-3 5 6 -4 5 3 -4 1 -1 0
9

提示

样例解释

  • 对于样例 11,一种最优的方案是 [a1,a2,a3][a_1,a_2,a_3],这样可以在计算出前两个数的情况下不溢出。
  • 对于样例 22,一种最优的方案是 [a10,a1,a2,a5,a4,a7,a6,a8,a9,a3][a_{10},a_1,a_2,a_5,a_4,a_7,a_6,a_8,a_9,a_3],这样可以在计算前 99 个数的情况下不溢出。

数据范围及约定

对于全部数据,保证 1n5001\le n\le 5001<k81< k\le 82k1ai<2k1-2^{k-1}\le a_i<2^{k-1}