Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: aomILOVEMYFRIEND
Problemset: วิศวกรรมข้อมูล
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-09 23:22:16
/*#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
string F="";
cin >>n;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
//fixed to เลขฐาน 2 in arr[]
for(int i = 0;i <n;i++){
int x = arr[i];
string bin = "";
if (x == 0) bin = "0";
while(x > 0){
bin = char('0' + x % 2) + bin; // เอาเศษ (bit) มาต่อหน้า
x /= 2;
}
F+=bin;
}
}*/
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
int n;
ull num[4];
bool used[4] = {0};
ull join_num(ull curr[4]){
ull joined=0;int count=0;
for(int i = 0;i < n;i++){
int index;
for(int j = 0;j < sizeof(curr[i]) * 8 - 1;j++){
if(((curr[i]>>j)&1)==1){
index=j+1;
}
}
joined = joined|(curr[i]<<count);
count+=index;
}
return joined;
}
ull find_max(ull curr[4], int pos){
if(pos==n){
return join_num(curr);
}
unsigned long long max=0;
for(int i = 0;i < n;i++){
if(!used[i]){
used[i] = 1;
curr[pos] = num[i];
int get_ans = find_max(curr, pos+1);
if(get_ans>max){
max=get_ans;
}
used[i] = 0;
}
}
return max;
}
int main(){
// input
cin>>n;
for(int i = 0;i < n;i++)cin>>num[i];
// find max answer
ull blank[4];
cout<<find_max(blank, 0);
return 0;
}