Submission

Status:

PP-PPPP-PP

Subtask/Task Score:

80/100

Score: 80

User: nxtx_ss

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-14 11:47:56

#include <bits/stdc++.h>
using namespace std;
int n;
string p(int k){
    int q[1000];
    int i=0,ct=0;
    string l;
    if(k>0){
    while(k>0){
        q[i]=k%2;
        k=k/2;
        i++;
    }
    }
    else if(k==0){
        return "0";
    }
    for(int j=i-1; j>=0; j--){
        l+=to_string(q[j]) ;
    }
    return l;
}
int main()
{
    ios_base::sync_with_stdio(0);
	cin.tie(0);
    cin>>n;
    int a[n],ct[n]={0},d[n]={0},mx=-999999,m;
    string g,s;
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
    for(int i=0; i<n; i++) {
            g=p(a[i]);
            int k=0,f=0;
            for(int k=0; k<g.size(); k++){
                if(g[k] == '0'){
                    f=1;
                }
                else if(g[0]=='1' && g[k] == '1' && f==0){
                    ct[i]++;
                }
                else if(g[k] == '1'){
                    d[i]++;
                }
            }
    }
    for(int i=0; i<n-1; i++) {
        for(int j=i+1;j<n;j++){
            if(ct[i] < ct[j]){
                swap(ct[i],ct[j]);
                swap(a[i],a[j]);
                swap(d[i],d[j]);
            }
            else if(ct[i]==ct[j]){
                if(d[i] < d[j]){
                    swap(ct[i],ct[j]);
                    swap(a[i],a[j]);
                    swap(d[i],d[j]);
                }
                else if(d[i]==d[j] && p(a[j]).size() < p(a[i]).size() ){
                    swap(ct[i],ct[j]);
                    swap(a[i],a[j]);
                    swap(d[i],d[j]);
                }
            }
        }
    }
  //  for(int i=0;i<n;i++){
  //      cout << p(a[i]);
  //  }
    string u;

  //  cout<<"\n";
    for(int i=0;i<n;i++){
        u+=p(a[i]);
    }
    long long sm=0,z=u.size()-1;
    for(int i=0;i<u.size(); i++) {
        sm=sm+(u[i]-'0')*pow(2,z);
        z--;
    }
    cout<<sm;
}