166972025-05-09 15:46:08algoproXorcpp17Hibás válasz 0/10048ms1328 KiB
// UUID: 53ff18bb-e62c-4686-b39b-33648e4b2438
#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&(a<<bit));
            res.second+=(b&(b<<bit));
        }
        else break;
        bit--;
    }
    if (bit<0) return res;
    res.first+=(1<<bit)-1;
    res.second+=(1<<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&(l<<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;
}

int main() {
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    cin>>t;
    while (t--){
        solve();
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/100
1Elfogadva0/01ms316 KiB
2Hibás válasz0/06ms316 KiB
3Hibás válasz0/51ms500 KiB
4Hibás válasz0/51ms316 KiB
5Hibás válasz0/51ms316 KiB
6Hibás válasz0/51ms316 KiB
7Hibás válasz0/53ms316 KiB
8Hibás válasz0/54ms468 KiB
9Hibás válasz0/54ms316 KiB
10Hibás válasz0/56ms436 KiB
11Hibás válasz0/510ms564 KiB
12Hibás válasz0/510ms592 KiB
13Hibás válasz0/519ms632 KiB
14Hibás válasz0/628ms868 KiB
15Hibás válasz0/639ms1080 KiB
16Hibás válasz0/648ms1152 KiB
17Hibás válasz0/648ms1328 KiB
18Hibás válasz0/76ms508 KiB
19Hibás válasz0/748ms1184 KiB
20Hibás válasz0/748ms1328 KiB