Submission

Status:

-PPP-PPP--

Subtask/Task Score:

60/100

Score: 60

User: angpangSK

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

Language: cpp

Time: 0.003 second

Submitted On: 2025-09-25 20:36:22

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

string IntToBitstring(int n) {
    string s = "";
    while(n > 0) {
        s = to_string(n % 2) + s;
        n /= 2;
    }
    return s;
}

int BitstringToInt(string s) {
    int n = 0;
    for(int i = 0; i < s.length(); i++) {
        n = n * 2 + (s[i] - '0');
    }
    return n;
}

int main() {
    int n;
    cin >> n;
    int arr[n];
    for(int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    string bit[n];
    for(int i = 0; i < n; i++) {
        bit[i] = IntToBitstring(arr[i]);
    }
    //find greatest value
    string bignum;
    int value;
    string bignum1;
    int value1;
    if (n == 2) {
        bignum = bit[0] + bit[1];
        value = BitstringToInt(bignum);
        bignum1 = bit[1] + bit[0];
        value1 = BitstringToInt(bignum1);
        if (value > value1) {
            cout << value << endl;
        }
        else {
            cout << value1 << endl;
        }
    }
    else if (n == 3) {
        bignum = bit[0] + bit[1] + bit[2];
        value = BitstringToInt(bignum);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < n; k++) {
                    if (i != j && j != k && i != k) {
                        bignum1 = bit[i] + bit[j] + bit[k];
                        value1 = BitstringToInt(bignum1);
                        if (value < value1) {
                            value = value1;
                            bignum = bignum1;
                        }
                    }
                }
            }
        }
        cout << value << endl;
    }
    else if (n == 4) {
        bignum = bit[0] + bit[1] + bit[2] + bit[3];
        value = BitstringToInt(bignum);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < n; k++) {
                    for (int l = 0; l < n; l++) {
                        if (i != j && j != k && i != k && i != l && j != l && k != l) {
                            bignum1 = bit[i] + bit[j] + bit[k] + bit[l];
                            value1 = BitstringToInt(bignum1);
                            if (value < value1) {
                                value = value1;
                                bignum = bignum1;
                            }
                        }
                    }
                }
            }
        }
        cout << value << endl;
    }
    return 0;
}