HackerEarth Minimum XOR problem solution YASH PAL, 31 July 2024 In this HackerEarth Minimum XOR problem solution You are given Q queries of two types: X: Append value X into an array. X K: You are required to print the Kth minimum XOR of X with the current array. You have to make a new array whose ith element is current_array[i]^x. Then sort it and print the Kth element. HackerEarth Minimum XOR problem solution. #include<bits/stdc++.h>using namespace std;typedef long long ll;#define pb push_back#define ALL(x) x.begin(),x.end()#define vec vector<int>#define LG 63#define int lltypedef struct data{ data* bit[2]; int below = 0;}trie; trie* head; void insert(int x){ trie* cur = head; int y = x; for(int i=LG ;i>=0 ;i--) { ll t= (1ll << i ); int b = (x>>i) & 1; cur -> below++ ; if(!cur -> bit[b]) cur -> bit[b] = new trie(); cur = cur -> bit[b]; } cur -> below++;} int query(int y,int k){ ll ans = 0; trie* curr = head; for(int i=LG;i>=0;i--) { ll t = ( 1ll << i ); int b = ( y >> i ) & 1; ll ava=0; if( curr -> bit[b] ) ava = curr -> bit[b] -> below; if( ava >= k ) { curr = curr -> bit[b]; } else { ans += t; k -= ava; if( !curr -> bit[!b] ) curr -> bit[!b] = new trie(); curr = curr -> bit[!b]; } } return ans;} int32_t main(){ head=new trie(); ll q; cin >> q; while(q--) { ll t; cin>>t; if(t==1) { ll x; cin >> x; insert(x); } else { ll x,k; cin >> x >> k; cout<<query(x,k)<<"n"; } }} coding problems