| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38869 | 氩_wjy | 【S】T2 | C++ | 通过 | 100 | 403 MS | 143316 KB | 1509 | 2025-11-10 19:18:16 |
#include<bits/stdc++.h> // #define int long long #define ull unsigned long long #define gc getchar #define clz __builtin_clz using namespace std; const int M=(1<<24),MS=M+7; inline char fgc() { static char buf[1 << 17], *p = buf, *q = buf; return p == q && (q = buf + fread(p = buf, 1, 1 << 17, stdin), p == q) ? EOF : *p++; } inline int rint() { int x = 0, s = fgc(), f = 1; for (; s < '0' || '9' < s; s = fgc()) f = s == '-' ? -f : f; for (; '0' <= s && s <= '9'; s = fgc()) x = x * 10 + (s ^ '0'); return x * f; } int n,m,tot; int a[MS>>1]; int OCC[MS]; signed main(){ #ifndef ONLINE_JUDGE freopen("guidance.in","r",stdin); freopen("guidance.out","w",stdout); #endif n=rint(),m=rint(); for(int i=1;i<=n;i++)if(OCC[rint()]++){ cout<<0<<endl; return 0; }for(int i=0;i<(1<<m);i++)if(OCC[i])a[++tot]=i; sort(a+1,a+tot+1); int h=m; // cout<<clz(3)<<endl; for(int i=1;i<tot;i++)h=min(h,31-clz(a[i]^a[i+1])); // cout<<h<<endl; int UB=(1<<h<<1)-1; for(int i=0;i<=UB;i++)OCC[i]=2e9+7; for(int i=1;i<tot;i++){ int v=a[i]^a[i+1]; if(31-clz(v)==h){ for(int k=0;k<=UB;k++){ OCC[k]=min(OCC[k],abs((a[i]^k)-(a[i+1]^k))+v); } } }ull Ans=0; // for(int i=0;i<(1<<m);i++)cout<<OCC[i&(UB-1)]<<" ";cout<<endl; for(int i=0;i<(1<<m);i++)Ans+=(ull)(i+1)*(ull)OCC[i&UB]; cout<<Ans<<endl;return 0; }