Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: Zailagend1

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-10-06 13:47:38

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    cin.tie(0)->sync_with_stdio(false);
    int a;
    cin >> a;
    
    vector<pair<string,int>> group;
    for(int i = 0;i<a;i++){
        string sum = "";
        int b;
        cin >> b;
        bitset<7> num(b);
        bool start = false;
        if(b == 0){
            group.push_back({"0",b});
            continue;
        }
        for(char x : num.to_string()){
            if(x == '0' && start){
                sum += x;
            }
            if(x == '1'){
                start = true;
                sum += x;
            }
        }
        group.push_back({sum,b});
    }
    sort(group.begin(),group.end(),[](pair<string,long long> a,pair<string,long long> b){
        int exp = 8;
        int counter1 = 0;
        int counter2 = 0;
        for(char x : a.first){
            if(x == '1'){
                counter1 += pow(2,exp);
            }
            exp--;
        }
        exp = 8;
        for(char x : b.first){
            if(x == '1'){
                counter2 += pow(2,exp);
            }
            exp--;
        }
        return counter1 > counter2;
    });
    string sum3 ="";
    for(auto[x,y] : group){
        sum3+=x;
        cout << x << '\n';
    }
    int exp = sum3.size()-1;
    int sum2 = 0;
    for(char x : sum3){
        if(x == '1'){
            sum2 += (pow(2,exp));
        }
        exp--;
    }
    cout << sum2;
}