Xor Basis - YessineJallouli/Competitive-Programming GitHub Wiki

struct xorBasis {
    int basis[31];
    void clear(){
        memset(basis, 0,sizeof basis);
    }
    void addVector(int x) {
        for (int i = 30; i >= 0; i--) {
            if (((1 << i) & x)  == 0) continue;
            if (basis[i])
                x^= basis[i];
            else {
                basis[i] = x;
                return;
            }
        }
    }
    int size() {
        int sz = 0;
        for (int i = 0; i < 31; i++) {
            if (basis[i])
                sz++;
        }
        return sz;
    }
    int getMax(){
        int value=0;
        for(int i=30;i>=0;i--){
            if(value&(1<<i)) continue;
            if(basis[i]){
                value^=basis[i];
            }
        }
        return value;
    }
};

Resources :
https://codeforces.com/blog/entry/68953
Problems :
https://codeforces.com/contest/959/problem/F