| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38861 | 氩_wjy | 【S】T2 | C++ | 解答错误 | 90 | 423 MS | 143324 KB | 1486 | 2025-11-10 18:57:29 |
#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],r[MS]; signed main(){ #ifndef ONLINE_JUDGE freopen("guidance.in","r",stdin); freopen("guidance.out","w",stdout); #endif cin>>n>>m; 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=32; // cout<<clz(3)<<endl; for(int i=1;i<tot;i++)h=min(h,32-clz(a[i]^a[i+1])); // cout<<h<<endl; int UB=(1<<h+1); for(int i=0;i<UB;i++)OCC[i]=(1<<m); for(int i=1;i<n;i++){ if(32-clz(a[i]^a[i+1])==h){ for(int k=0;k<UB;k++){ OCC[k]=min(OCC[k],abs((a[i]^k)-(a[i+1]^k))+(a[i]^a[i+1])); } } }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+=1ull*(i+1)*OCC[i&(UB-1)]; cout<<Ans<<endl; }