167012025-05-09 17:02:04algoproXorcpp17Hibás válasz 30/10048ms1844 KiB
// UUID: a666a6d8-6fab-4118-9995-b6bc8054e992
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define vi vector<int>
#define pii pair<int,int>

const int maxbit=63;

pair<ll, ll> get(ll a, ll b){
    pair<ll,ll> res={0, 0};
    int bit=maxbit;
    while (bit>=0){
        if ((a>>bit) == (b>>bit)){
            res.first+=(a&(1LL<<bit));
            res.second+=(b&(1LL<<bit));
        }
        else break;
        bit--;
    }
    if (bit<0) return res;
    res.first+=(1LL<<bit)-1;
    res.second+=(1LL<<bit);
    return res;
}

void solve(){
    ll l,r;
    cin>>l>>r;
    ll base=0;
    int bit=maxbit;
    while (bit>=0){
        if (l>>bit==r>>bit){
            base+=(l&(1LL<<bit));
        }
        else break;
        bit--;
    }
    ll x = 1<<bit;
    x+=base;
    
    auto [y1,z1] = get(x+1, r);
    auto [y2,z2] = get(l, x-1);
    if (r-l==2){
        cout<<l<<" "<<l+1<<" "<<r<<"\n";
        return;
    }

    if (r-(x+1)<1 || (x^y1^z1)<(x^y2^z2)){
        cout<<y2<<" "<<z2<<" "<<x<<"\n";
        return;
    } 

    cout<<x<<" "<<y1<<" "<<z1<<"\n";
    return;
}

/*vector<ll> solve2(ll l, ll r){
    vector<ll> v(3, 0);
    for (ll x=l;x<=r;x++){
        for (ll y=x+1;y<=r;y++){
            for (ll z=y+1;z<=r;z++){
                if ((x^y^z)>(v[0]^v[1]^v[2])) v={x,y,z};
            }
        }
    }
    return v;
}*/

int main() {
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    cin>>t;
    while (t--){
        solve();
    }
}

/*int main(){
    ll limit=150;
    for (ll l=0;l<=limit;l++){
        for (ll r=l+2;r<=limit;r++){
            auto a = solve(l,r);
            auto b = solve2(l,r);
            if ((a[0]^a[1]^a[2])!=(b[0]^b[1]^b[2])){
                cout<<"ERROR: "<<l<<" "<<r<<"\n";
                cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<"\n";
                cout<<b[0]<<" "<<b[1]<<" "<<b[2]<<"\n";
                return 0;
            }
        }
    }
}*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base30/100
1Elfogadva0/01ms316 KiB
2Hibás válasz0/06ms316 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/53ms316 KiB
8Elfogadva5/54ms316 KiB
9Hibás válasz0/54ms316 KiB
10Hibás válasz0/56ms316 KiB
11Hibás válasz0/59ms600 KiB
12Hibás válasz0/510ms584 KiB
13Hibás válasz0/519ms852 KiB
14Hibás válasz0/628ms1236 KiB
15Hibás válasz0/639ms1368 KiB
16Hibás válasz0/648ms1696 KiB
17Hibás válasz0/648ms1844 KiB
18Hibás válasz0/76ms564 KiB
19Hibás válasz0/748ms1824 KiB
20Hibás válasz0/748ms1700 KiB