Submission #41

Details and source code

Back to submissions
IDTimeUserProblemLangVerdict
41Apr 14, 2025, 12:55 PMadminThe Duel of SpellscppAC

Source Code

cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
struct Trie {
    Trie* child[2];
    Trie() { child[0] = child[1] = nullptr; }
};
 
void insertTrie(Trie* root, int num) {
    Trie* cur = root;
    for (int i = 31; i >= 0; i--) {
        int bit = (num >> i) & 1;
        if (!cur->child[bit])
            cur->child[bit] = new Trie();
        cur = cur->child[bit];
    }
}
 
int query(Trie* root, int num) {
    Trie* cur = root;
    int ans = 0;
    for (int i = 31; i >= 0; i--) {
        int bit = (num >> i) & 1;
        if (cur->child[1 - bit]) {
            ans |= (1 << i);
            cur = cur->child[1 - bit];
        } else {
            cur = cur->child[bit];
        }
    }
    return ans;
}
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    vector<int> arr(n);
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    Trie* root = new Trie();
    insertTrie(root, arr[0]);
    int maxXor = 0;
    for (int i = 1; i < n; i++) {
        maxXor = max(maxXor, query(root, arr[i]));
        insertTrie(root, arr[i]);
    }
    cout << maxXor;
    return 0;
}