Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
55147 | xit. | 线性基 (basis) | C++ | 解答错误 | 0 | 3 MS | 1036 KB | 769 | 2022-08-09 11:39:05 |
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll ans,a[200001],f[2]; inline ll Read() { static ll x=0,c=getchar(); for(; c<=47||c>=58; c=getchar()); for(x=0; c>=48&&c<=57; c=getchar()) x=(x<<3)+(x<<1)+(c&15); return x; } void F(int x,int y) { f[0]=(x&y),f[1]=(x|y); } int main() { // freopen("basis.in","r",stdin); // freopen("basis.out","w",stdout); ll n=Read(); for(int i=1; i<=n; i++) a[i]=Read(); for(int i=1; i<n; i++) { F(a[i],a[i+1]); bool x=0; if(a[i]>=a[i+1] && f[0]>a[i]) x=1; else if(a[i]<=a[i+1] && f[1]>a[i+1]) x=1; if(x) a[i]=f[0],a[i+1]=f[1]; } for(int i=1; i<=n; i++) ans+=a[i]*a[i]; printf("%lld\n",ans); return 0; }