文件详细信息
本文件的大小为 752 字节。
#include<cstdio>
#include<cstring>
template<typename T>
void read(T&num){
int ch=getchar();
num=0;
while(ch<48||ch>57)ch=getchar();
while(ch>=48&&ch<=57)num=(num<<3)+(num<<1)+(ch^48),ch=getchar();
}
typedef long long ll;
const int maxn=100005;
const ll inf=0x3f3f3f3f3f3f3f3f;
int n,cnt[64][2];
ll m,b,f[64][maxn];
template<typename T>
void chkmin(T&a,T b){
a>b&&(a=b);
}
int main(){
read(n),read(m);
for(int i=1;i<=n;i++){
read(b);
for(int i=0;i<60;i++)cnt[i][b&1]++,b>>=1;
}
memset(f,63,sizeof(f));
f[60][0]=0;
for(int i=59;i>=0;i--)
for(int j=0;j<n;j++)
for(int k=0;k<=1;k++){
int l=(j<<1)-cnt[i][k]+(m>>i&1);
if(l>=0&&l<n)chkmin(f[i][l],(f[i+1][j]<<1)+(k^1));
}
printf("%lld\n",f[0][0]!=inf?f[0][0]:-1);
return 0;
}