AC !
This commit is contained in:
@@ -10,25 +10,25 @@ struct TreeNode {
|
||||
|
||||
TreeNode tree[TREE_SIZE] = {0};
|
||||
int vals[TREE_SIZE] = {0};
|
||||
int num_in_tree[TREE_SIZE] = {0};
|
||||
int num_in_tree_head = 0, num_in_tree_tail = 0;
|
||||
// unsigned short num_in_tree[TREE_SIZE] = {0};
|
||||
// int num_in_tree_head = 0, num_in_tree_tail = 0;
|
||||
int tree_root = NOTHING;
|
||||
// int new_tree_node = 0;
|
||||
int M, K, H;
|
||||
long long total = 0;
|
||||
int l = 0;
|
||||
|
||||
int enqueue(int num) {
|
||||
num_in_tree[num_in_tree_tail] = num;
|
||||
num_in_tree_tail = (num_in_tree_tail + 1) % TREE_SIZE;
|
||||
return 0;
|
||||
}
|
||||
// int enqueue(int num) {
|
||||
// num_in_tree[num_in_tree_tail] = num;
|
||||
// num_in_tree_tail = (num_in_tree_tail + 1) % TREE_SIZE;
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
int dequeue() {
|
||||
int ans = num_in_tree[num_in_tree_head];
|
||||
num_in_tree_head = (num_in_tree_head + 1) % TREE_SIZE;
|
||||
return ans;
|
||||
}
|
||||
// int dequeue() {
|
||||
// int ans = num_in_tree[num_in_tree_head];
|
||||
// num_in_tree_head = (num_in_tree_head + 1) % TREE_SIZE;
|
||||
// return ans;
|
||||
// }
|
||||
|
||||
int insert_node(int num, int pos) {
|
||||
if (pos == NOTHING) {
|
||||
@@ -37,7 +37,7 @@ int insert_node(int num, int pos) {
|
||||
tree_root = l % K;
|
||||
vals[l % K] = num;
|
||||
// new_tree_node = (new_tree_node + 1) % TREE_SIZE;
|
||||
return 0;
|
||||
return l % K;
|
||||
}
|
||||
tree[pos].size++;
|
||||
if (vals[pos] > num) {
|
||||
@@ -46,11 +46,11 @@ int insert_node(int num, int pos) {
|
||||
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
||||
vals[l % K] = num;
|
||||
// new_tree_node = (new_tree_node + 1) % TREE_SIZE;
|
||||
return 0;
|
||||
return l % K;
|
||||
}
|
||||
else {
|
||||
insert_node(num, tree[pos].left);
|
||||
return 0;
|
||||
return insert_node(num, tree[pos].left);
|
||||
// return 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -59,11 +59,11 @@ int insert_node(int num, int pos) {
|
||||
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
||||
vals[l % K] = num;
|
||||
// new_tree_node = (new_tree_node + 1) % TREE_SIZE;
|
||||
return 0;
|
||||
return l % K;
|
||||
}
|
||||
else {
|
||||
insert_node(num, tree[pos].right);
|
||||
return 0;
|
||||
return insert_node(num, tree[pos].right);
|
||||
// return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,11 +186,11 @@ int main() {
|
||||
|
||||
total += count_less_than(((long long)num) + H, tree_root) - count_less_than(num - H - 1, tree_root);
|
||||
if (l >= K) {
|
||||
tree_root = delete_node(dequeue(), tree_root);
|
||||
tree_root = delete_node(vals[l % K], tree_root);
|
||||
// traverse(tree_root);
|
||||
// printf("\n");
|
||||
}
|
||||
enqueue(num);
|
||||
// enqueue(num);
|
||||
insert_node(num, tree_root);
|
||||
// traverse(tree_root);
|
||||
// printf("\n");
|
||||
|
||||
Reference in New Issue
Block a user