提交时间:2025-11-10 18:39:55

运行 ID: 38853

#include <bits/stdc++.h> // #define int long long using namespace std; int n,m; int a[9000005]; int V; unsigned long long r[100005]; map<int,int> mp; signed main(){ // freopen("guidance.in","r",stdin); // freopen("guidance.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>m; for (int i=1;i<=n;i++){ cin>>a[i]; if (mp[a[i]]!=0){ cout<<"0\n"; return 0; } mp[a[i]]++; } V=(1<<m); // memset(r,-1,sizeof(r)); for (int x=0;x<V;x++){ unsigned long long minn=-1; for (int i=1;i<=n;i++){ for (int j=i+1;j<=n;j++){ int aix=a[i]^x; int ajx=a[j]^x; int aij=a[i]^a[j]; unsigned long long cnt=(unsigned long long)abs(aix-ajx)+aij; if (cnt<minn){ minn=cnt; } } } r[x]=minn; } unsigned long long ans=0; for (int x=0;x<V;x++){ ans+=(unsigned long long)(x+1)*r[x]; } cout<<ans<<"\n"; cout.flush(); return 0; }