Submission #1366170

#TimeUsernameProblemLanguageResultExecution timeMemory
1366170opeleklanosXORanges (eJOI19_xoranges)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
using namespace std;

vector<int> arr;

struct segTree{
    segTree * lc, * rc;
    int l, r;
    int xorO, xor1;
    int even;
    
    segTree(int indx){
        even = 0;
        l = r = indx;
        xor0 = arr[indx];
        xor1 = 0;
        lc = rc = nullptr;
    }
    
    segTree(segTree*le, segTree*ri){
        lc = le;
        rc = ri;
        l = le->l;
        r = ri->r;
        xor0 = le->xor0;
        if(lc->even) xor0 ^= rc->xor0;
        else xor0 ^= rc->xor1;
        
        xor1 = le->xor1;
        if(lc->even) xor1 ^= rc->xor1;
        else xor1 ^= rc->xor0;
    }
};

segTree*build(int l, int r){
    if(l == r) return new segTree(l);
    int mid = (l+r)/2;
    return new segTree(build(l, mid), build(mid+1, r));
}

void update(int indx, int newVal, segTree*st){
    if(st->l == st->r){
        st->xor0 = newVal;
        return;
    }
    
    int mid = (st->l + st->r)/2;
    
    if(indx<=mid) update(indx, newVal, st->lc);
    else update(indx, newVal, st->rc);
    
    if(lc->even){
        st->xor0 = st->lc->xor0 ^ st->rc->xor0;
        st->xor1 = st->lc->xor1 ^ st->rc->xor1;
    }
    
    else{
        st->xor0 = st->lc->xor0 ^ st->rc->xor1;
        st->xor1 = st->lc->xor1 ^ st->rc->xor0;
    }
}

segTree* query(int l, int r, segTree*st){
    segTree * ret = new segTree(l);
    ret->l = st->l;
    ret->r = st->r;
    ret->xor0 = st->xor0;
    ret->xor1 = st->xor1;
    if(st->l == st->r){
        return ret;
    }
    
    int mid = (st->l + st->r)/2;
    
    segTree * le=nullptr; segTree*ri=nullptr;
    if(l<=mid) le = query(l, min(mid, r), st->lc);
    if(r>mid) ri = query(max(mid+1, l), r, st->rc);
    
    if(!le) return ri;
    if(!ri) return le;
    
    ret->l = le->l;
    ret->r = ri->r;
    ret->xor0 = le->xor0 + ((le->even)?ri->xor0:ri->xor1);
    ret->xor1 = le->xor1 + ((le->even)?ri->xor1:ri->xor0);
    
    ret->even = (ret->r - ret->l + 1) %2
    
    return ret;
}


int main(void){
    
}











Compilation message (stderr)

xoranges.cpp: In constructor 'segTree::segTree(int)':
xoranges.cpp:16:9: error: 'xor0' was not declared in this scope; did you mean 'xorO'?
   16 |         xor0 = arr[indx];
      |         ^~~~
      |         xorO
xoranges.cpp: In constructor 'segTree::segTree(segTree*, segTree*)':
xoranges.cpp:26:9: error: 'xor0' was not declared in this scope; did you mean 'xorO'?
   26 |         xor0 = le->xor0;
      |         ^~~~
      |         xorO
xoranges.cpp:26:20: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   26 |         xor0 = le->xor0;
      |                    ^~~~
      |                    xorO
xoranges.cpp:27:34: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   27 |         if(lc->even) xor0 ^= rc->xor0;
      |                                  ^~~~
      |                                  xorO
xoranges.cpp:32:26: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   32 |         else xor1 ^= rc->xor0;
      |                          ^~~~
      |                          xorO
xoranges.cpp: In function 'void update(int, int, segTree*)':
xoranges.cpp:44:13: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   44 |         st->xor0 = newVal;
      |             ^~~~
      |             xorO
xoranges.cpp:53:8: error: 'lc' was not declared in this scope
   53 |     if(lc->even){
      |        ^~
xoranges.cpp:54:13: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   54 |         st->xor0 = st->lc->xor0 ^ st->rc->xor0;
      |             ^~~~
      |             xorO
xoranges.cpp:54:28: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   54 |         st->xor0 = st->lc->xor0 ^ st->rc->xor0;
      |                            ^~~~
      |                            xorO
xoranges.cpp:54:43: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   54 |         st->xor0 = st->lc->xor0 ^ st->rc->xor0;
      |                                           ^~~~
      |                                           xorO
xoranges.cpp:59:13: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   59 |         st->xor0 = st->lc->xor0 ^ st->rc->xor1;
      |             ^~~~
      |             xorO
xoranges.cpp:59:28: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   59 |         st->xor0 = st->lc->xor0 ^ st->rc->xor1;
      |                            ^~~~
      |                            xorO
xoranges.cpp:60:43: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   60 |         st->xor1 = st->lc->xor1 ^ st->rc->xor0;
      |                                           ^~~~
      |                                           xorO
xoranges.cpp: In function 'segTree* query(int, int, segTree*)':
xoranges.cpp:68:10: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   68 |     ret->xor0 = st->xor0;
      |          ^~~~
      |          xorO
xoranges.cpp:68:21: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   68 |     ret->xor0 = st->xor0;
      |                     ^~~~
      |                     xorO
xoranges.cpp:85:10: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   85 |     ret->xor0 = le->xor0 + ((le->even)?ri->xor0:ri->xor1);
      |          ^~~~
      |          xorO
xoranges.cpp:85:21: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   85 |     ret->xor0 = le->xor0 + ((le->even)?ri->xor0:ri->xor1);
      |                     ^~~~
      |                     xorO
xoranges.cpp:85:44: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   85 |     ret->xor0 = le->xor0 + ((le->even)?ri->xor0:ri->xor1);
      |                                            ^~~~
      |                                            xorO
xoranges.cpp:86:53: error: 'struct segTree' has no member named 'xor0'; did you mean 'xorO'?
   86 |     ret->xor1 = le->xor1 + ((le->even)?ri->xor1:ri->xor0);
      |                                                     ^~~~
      |                                                     xorO
xoranges.cpp:88:41: error: expected ';' before 'return'
   88 |     ret->even = (ret->r - ret->l + 1) %2
      |                                         ^
      |                                         ;
   89 | 
   90 |     return ret;
      |     ~~~~~~                               
xoranges.cpp:88:15: warning: control reaches end of non-void function [-Wreturn-type]
   88 |     ret->even = (ret->r - ret->l + 1) %2
      |     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~