Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: chayuth20

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-05 10:22:49


#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

int main() {
    int N;
    cin >> N;

    vector<string> v(N);

    // แปลงเลขฐานสิบ -> ฐานสอง
    for (int i = 0; i < N; i++) {
        int x;
        cin >> x;

        string s = "";

        while (x > 0) {
            s += char('0' + x % 2);
            x /= 2;
        }

        reverse(s.begin(), s.end());
        v[i] = s;
    }

    // เรียงให้การต่อกันได้ค่ามากที่สุด
    sort(v.begin(), v.end(), [](string a, string b) {
        return a + b > b + a;
    });

    // ต่อเลขฐานสองทั้งหมด
    string binary = "";

    for (string s : v) {
        binary += s;
    }

    // binary -> decimal
    unsigned long long ans = 0;

    for (char c : binary) {
        ans = ans * 2 + (c - '0');
    }

    cout << ans << '\n';

    return 0;
}