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;
}