Submission

Status:

PP-PPPP-PP

Subtask/Task Score:

80/100

Score: 80

User: konthaina_TH

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-09-26 03:34:12

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

struct Element {
    int val;
    int cnt;
    string bin_str;
};

string to_binary(bitset<64> b) {
    string str = b.to_string();
    auto pos = str.find_first_not_of('0');
    return (pos != string::npos) ? str.substr(pos) : "0";
}

int main() {
    int n;
    cin >> n;
    vector<Element> num(n);
    for (int i=0;i<n;i++) {
        cin >> num[i].val;
        bitset<64> b(num[i].val);
        num[i].cnt = b.count();
        num[i].bin_str = to_binary(b);
        //bit[i].erase(0,min(s[i].find_first_not_of('0'),s[i].size()-1));
    }
    sort(num.begin(),num.end(), [](const Element& A, const Element& B) {
        if (A.cnt != B.cnt) {
            return A.cnt > B.cnt;
        }
        return (A.bin_str + B.bin_str) > (B.bin_str + A.bin_str);
    });
    string s = "";
    for (int i=0;i<n;i++) {
        s += num[i].bin_str;
    }
    unsigned long long val = stoull(s,nullptr,2);
    cout << val << "\n";
    return 0;
}