Remove unused code.
This commit is contained in:
@@ -10,33 +10,17 @@ struct TreeNode {
|
|||||||
|
|
||||||
TreeNode tree[TREE_SIZE] = {0};
|
TreeNode tree[TREE_SIZE] = {0};
|
||||||
int vals[TREE_SIZE] = {0};
|
int vals[TREE_SIZE] = {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 tree_root = NOTHING;
|
||||||
// int new_tree_node = 0;
|
|
||||||
int M, K, H;
|
int M, K, H;
|
||||||
long long total = 0;
|
long long total = 0;
|
||||||
int l = 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 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) {
|
int insert_node(int num, int pos) {
|
||||||
if (pos == NOTHING) {
|
if (pos == NOTHING) {
|
||||||
// The tree_root is -1!
|
// The tree_root is -1!
|
||||||
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
||||||
tree_root = l % K;
|
tree_root = l % K;
|
||||||
vals[l % K] = num;
|
vals[l % K] = num;
|
||||||
// new_tree_node = (new_tree_node + 1) % TREE_SIZE;
|
|
||||||
return l % K;
|
return l % K;
|
||||||
}
|
}
|
||||||
tree[pos].size++;
|
tree[pos].size++;
|
||||||
@@ -45,12 +29,10 @@ int insert_node(int num, int pos) {
|
|||||||
tree[pos].left = l % K;
|
tree[pos].left = l % K;
|
||||||
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
||||||
vals[l % K] = num;
|
vals[l % K] = num;
|
||||||
// new_tree_node = (new_tree_node + 1) % TREE_SIZE;
|
|
||||||
return l % K;
|
return l % K;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return insert_node(num, tree[pos].left);
|
return insert_node(num, tree[pos].left);
|
||||||
// return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -58,12 +40,10 @@ int insert_node(int num, int pos) {
|
|||||||
tree[pos].right = l % K;
|
tree[pos].right = l % K;
|
||||||
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
tree[l % K] = TreeNode{1, NOTHING, NOTHING};
|
||||||
vals[l % K] = num;
|
vals[l % K] = num;
|
||||||
// new_tree_node = (new_tree_node + 1) % TREE_SIZE;
|
|
||||||
return l % K;
|
return l % K;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return insert_node(num, tree[pos].right);
|
return insert_node(num, tree[pos].right);
|
||||||
// return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,38 +94,12 @@ int delete_node(int num, int pos) {
|
|||||||
tree[parent].left = tree[child].right;
|
tree[parent].left = tree[child].right;
|
||||||
}
|
}
|
||||||
|
|
||||||
// tree[pos].val = tree[child].val;
|
|
||||||
// return pos;
|
|
||||||
tree[child].left = tree[pos].left;
|
tree[child].left = tree[pos].left;
|
||||||
tree[child].right = tree[pos].right;
|
tree[child].right = tree[pos].right;
|
||||||
tree[child].size = tree[pos].size;
|
tree[child].size = tree[pos].size;
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
|
||||||
int traverse(int pos) {
|
|
||||||
if (pos == NOTHING) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
printf("%d(", vals[pos]);
|
|
||||||
if (tree[pos].left < NOTHING) {
|
|
||||||
printf("l%d:", vals[pos]);
|
|
||||||
traverse(tree[pos].left);
|
|
||||||
}
|
|
||||||
if (tree[pos].right < NOTHING) {
|
|
||||||
printf("r%d:", vals[pos]);
|
|
||||||
traverse(tree[pos].right);
|
|
||||||
}
|
|
||||||
printf(")");
|
|
||||||
fflush(stdout);
|
|
||||||
// if (pos < 0) {
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
// traverse(tree[pos].left);
|
|
||||||
// printf("%d ", tree[pos].val);
|
|
||||||
// traverse(tree[pos].right);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int count_less_than(long long target, int pos) {
|
int count_less_than(long long target, int pos) {
|
||||||
if (pos == NOTHING) {
|
if (pos == NOTHING) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -161,8 +115,6 @@ int count_less_than(long long target, int pos) {
|
|||||||
return count_less_than(target, tree[pos].left);
|
return count_less_than(target, tree[pos].left);
|
||||||
}
|
}
|
||||||
|
|
||||||
// tree[pos].val == target
|
|
||||||
|
|
||||||
if (tree[pos].left == NOTHING) {
|
if (tree[pos].left == NOTHING) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -175,40 +127,14 @@ int main() {
|
|||||||
|
|
||||||
for (l = 0; l < M; l++) {
|
for (l = 0; l < M; l++) {
|
||||||
scanf("%d", &num);
|
scanf("%d", &num);
|
||||||
|
total += count_less_than(((long long)num) + H, tree_root) -
|
||||||
|
count_less_than(num - H - 1, tree_root);
|
||||||
// printf("num: %d, %d %d\n\n", num, count_less_than(num + H, tree_root),
|
|
||||||
|
|
||||||
// printf("num: %d, %d %d\n", num, count_less_than(((long long)num) + H, tree_root), count_less_than(num - H - 1, tree_root));
|
|
||||||
// printf("num: %d, ", num);
|
|
||||||
// printf("%d ", count_less_than(((long long)num) + H, tree_root));
|
|
||||||
// printf("%d\n", count_less_than(num - H - 1, tree_root));
|
|
||||||
|
|
||||||
total += count_less_than(((long long)num) + H, tree_root) - count_less_than(num - H - 1, tree_root);
|
|
||||||
if (l >= K) {
|
if (l >= K) {
|
||||||
tree_root = delete_node(vals[l % K], tree_root);
|
tree_root = delete_node(vals[l % K], tree_root);
|
||||||
// traverse(tree_root);
|
|
||||||
// printf("\n");
|
|
||||||
}
|
}
|
||||||
// enqueue(num);
|
|
||||||
insert_node(num, tree_root);
|
insert_node(num, tree_root);
|
||||||
// traverse(tree_root);
|
|
||||||
// printf("\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("%lld\n", total);
|
printf("%lld\n", total);
|
||||||
|
|
||||||
// int count = 0;
|
|
||||||
// int num = 0;
|
|
||||||
// scanf("%d", &count);
|
|
||||||
// for (int i = 0; i < count; i++) {
|
|
||||||
// scanf("%d", &num);
|
|
||||||
// insert_node(num, tree_root);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// for (int i = 0; i < count; i++) {
|
|
||||||
// printf("%d ", count_less_than(i, tree_root));
|
|
||||||
// }
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user