#501. 索尼大法好!
索尼大法好!
题目描述
将声音数字化的一种常见方式是在特定时刻记录声音强度。对于每个时刻,强度被记录为非负整数。因此,我们可以将声音文件表示为n个非负整数的数组。
如果数组中确实有K个不同的值,那么我们需要k =⌈log2K⌉位来存储每个值。然后它需要nk位来存储整个文件。
为了减少内存消耗,我们需要应用一些压缩。一种常见的方法是减少可能的强度值的数量。我们选择两个整数l≤r,然后以下列方式改变所有强度值:如果强度值在[l; r]范围内,我们不会改变它。如果小于l,我们将其改为l;如果它大于r,我们将其改为r。你可以看到我们失去了一些低强度和一些高强度。
您的任务是以这样的方式应用此压缩:文件适合大小为I字节的磁盘,并且数组中已更改元素的数量可能最小。
我们提醒您1个字节包含8位。
k =⌈log2K⌉是K≤2k的最小整数。特别是,如果K = 1,则k = 0。
输入格式
第一行包含两个整数n和I(1≤n≤4⋅10^5,1≤I≤10^8) - 数组的长度和磁盘的大小(以字节为单位)。 下一行包含n个整数ai(0≤ai≤10^9) - 表示声音文件的数组。
输出格式
打印单个整数 - 尽可能少的已更改元素。
样例
input
6 1
2 1 2 3 4 3
output
2
input
6 2
2 1 2 3 4 3
output
0
input
6 1
1 1 2 2 3 3
output
2