Created
March 10, 2018 19:18
-
-
Save Thiago4532/b8a0ab4d5f436609c7932af95b2d8ec5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <bits/stdc++.h> | |
| #define gc getchar | |
| #define rep(i, a, b) for(int i=a;i<=b;i++) | |
| #define pb push_back | |
| using namespace std; | |
| inline int scan(){ | |
| int n=0, x=gc(), s=1; | |
| for(;x<'0'||x>'9';x=gc()) if(x=='-') s=-1; | |
| for(;x>='0'&&x<='9';x=gc()) n = 10*n + x - '0'; | |
| return n*s; | |
| } | |
| struct node{ | |
| int v; | |
| node *l, *r; | |
| node(int v_=0){ | |
| v = v_; | |
| l = r = NULL; | |
| } | |
| }; | |
| int get(node *no){ | |
| if(no == NULL) return 0; | |
| return no->v; | |
| } | |
| int n; | |
| void update(node* no, int p, int v, int ini=1, int fim=n){ | |
| if(ini == fim){ | |
| no->v = v; | |
| return; | |
| } | |
| int meio = (ini + fim) >> 1; | |
| if(p <= meio){ | |
| if(no->l == NULL) no->l = new node; | |
| update(no->l, p, v, ini, meio); | |
| }else{ | |
| if(no->r == NULL) no->r = new node; | |
| update(no->r, p, v, meio+1, fim); | |
| } | |
| no->v = get(no->l) + get(no->r); | |
| } | |
| int query(node* no, int i, int j, int ini=1, int fim=n){ | |
| if(no==NULL || ini > j || fim < i) return 0; | |
| if(i <= ini && fim <= j) return no->v; | |
| int meio = (ini + fim) >> 1; | |
| int p1 = query(no->l, i, j, ini, meio); | |
| int p2 = query(no->r, i, j, meio+1, fim); | |
| return p1+p2; | |
| } | |
| node *no; | |
| int main(){ | |
| ios::sync_with_stdio(false), cin.tie(0); | |
| no = new node; | |
| delete no; | |
| delete no; | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment