Skip to content

Instantly share code, notes, and snippets.

@Thiago4532
Created March 10, 2018 19:18
Show Gist options
  • Select an option

  • Save Thiago4532/b8a0ab4d5f436609c7932af95b2d8ec5 to your computer and use it in GitHub Desktop.

Select an option

Save Thiago4532/b8a0ab4d5f436609c7932af95b2d8ec5 to your computer and use it in GitHub Desktop.
#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