Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
119006 陈家宝 线性基 (basis) C++ 通过 100 13 MS 1032 KB 786 2024-01-03 13:18:37

Tests(10/10):


#include<bits/stdc++.h> using namespace std; #define ll long long ll a[200005]; int sl[25],maxj=0,n; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); int j; for(j=0;(a[i]>>j)>0;j++) sl[j]+=(a[i]>>j)&1; maxj=max(maxj, j); } // sort(a + 1, a + n + 1); // for(int i = 1; i <= n; i++){ //// int j = i + 1; //// if(j > n)break; // for(int j = 1; j <= n; j++){ // ll x, y; // x = a[i] & a[j], y = a[i] | a[j]; // a[i] = x, a[j] = y; // } // } // for(int i = 1; i <= n; i++) // printf("%lld ", a[i]); ll ans = 0; for(int i = 1; i <= n; i++){ a[i] = 0; for(int j = 0; j < maxj; j++){ if(sl[j]){ sl[j]--; a[i] |= (1 << j); } } ans += a[i] * a[i]; } printf("%lld\n", ans); return 0; }


测评信息: