Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
55161 | 呵呵 | 线性基 (basis) | C++ | 运行超时 | 20 | 2000 MS | 1028 KB | 781 | 2022-08-09 11:41:25 |
#include <bits/stdc++.h> using namespace std; typedef unsigned long long ll; ll a[200000],sum; int n; inline ll read() //以字符串形式读入数字可提速 { ll x=0; char c=getchar(); for(; c<'0' || c>'9'; c=getchar()); for(; c<='9' && c>='0'; c=getchar()) x=(x<<3)+(x<<1)+c-'0'; //位运算优化即x*8+x*2=x*10 return x; } inline void dg() { for(int i=1; i<n; i++) { for(int j=1; j<=n; j++) { ll s=(a[i]&a[j]),t=(a[i]|a[j]); if((s*s+t*t)>(a[i]*a[i]+a[j]*a[j])) a[i]=s,a[j]=t; } } } int main() { n=read(); for(int i=1; i<=n; i++) a[i]=read(); dg(); for(int i=1; i<=n; i++) sum+=(a[i]*a[i]); printf("%lld",sum); return 0; }