提交时间:2022-08-10 11:40:57

运行 ID: 55191

#include <bits/stdc++.h> using namespace std; typedef long long ll; int cnt[25],n; priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q; int main() { ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>n; for(int i=1,x; i<=n; i++) { cin>>x; for(int j=0; j<20; j++) if((1<<j)&x) cnt[j]++; } for(int i=0; i<20; i++) q.push(make_pair(cnt[i],i)); ll sum=0,rec=(1<<20)-1,lst=0; while(!q.empty()) { pair<int,int> now=q.top(); q.pop(); sum+=rec*rec*(now.first-lst); lst=now.first; rec^=(1<<now.second); } cout<<sum<<'\n'; return 0; }