コード例 #1
0
ファイル: st_1.cpp プロジェクト: kuzmichevdima/coding
void update(pt & cur, int query_l, int query_r)
{
	if (cur->l == query_l && cur->r == query_r)
	{
		cur->delta++;
		return;
	}
	int m = cur->get_m();
	if (query_l < m && useful(query_l, min(query_r, m)))
	{
		if (cur->left == NULL)
			cur->left = new node(cur->l, m);
		update(cur->left, query_l, min(query_r, m));
	}
	if (query_r > m && useful(max(query_l, m), query_r))
	{
		if (cur->right == NULL)
			cur->right = new node(m, cur->r);
		update(cur->right, max(query_l, m), query_r);
	}
}