Submission

Status:

PP-PPPP-PP

Subtask/Task Score:

80/100

Score: 80

User: dddrrrr

Problemset: วิศวกรรมข้อมูล

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-15 20:28:45

#include <bits/stdc++.h>
using namespace std;

int cnt1 = 0;
string binary(int x){
	string ans = "";
	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;
	
}