Submission
Status:
PP-PPPP-PP
Subtask/Task Score:
80/100
Score: 80
User: dddrrrr
Problemset: วิศวกรรมข้อมูล
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-15 20:40:41
#include <bits/stdc++.h>
using namespace std;
int cnt1 = 0;
string binary(int x){
string ans = "";
if(x == 0)return "0";
while(x > 0){
if(x%2==1)cnt1++;
ans += (x%2)+'0';
x /= 2;
}
reverse(ans.begin() ,ans.end());
return ans;
}
int dec(string& str){
int sum = 0 ,k=0;
for(int i=str.size()-1 ;i>=0 ;i--){
if(str[i] == '1')sum +=(1LL << k);
k++;
}
return sum;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
vector <pair <string ,int>> vec(n);
int i=0;
while(i<n){
int x;cin >> x;
cnt1 = 0;
vec[i].first = binary(x);
vec[i].second = cnt1;
i++;
}
sort(vec.begin() ,vec.end() ,[](pair <string ,int>& a ,pair <string ,int>& b){
if(a.second != b.second)return a.second > b.second;
if(a.first.size() != b.first.size())return a.first.size() < b.first.size();
return a.first > b.first;
});
string str = "";
for(auto i : vec)str += i.first;
//cout << str << ' ';
cout << dec(str);
return 0;
}