#BST0000023. Cây tìm kiếm nhị phân - Bộ đếm độ sâu (Binary Search Tree)
Cây tìm kiếm nhị phân - Bộ đếm độ sâu (Binary Search Tree)
Cây tìm kiếm nhị phân - Bộ đếm độ sâu (Binary Search Tree)
Nguồn: Kattis
Phiên bản: Phước Hưng OJ Extended
Đề bài
Cho một hoán vị của các số từ đến . Dùng các số theo đúng thứ tự input để dựng một cây tìm kiếm nhị phân: số đầu tiên trở thành gốc; với mỗi số tiếp theo, bắt đầu từ gốc, đi sang trái nếu số mới nhỏ hơn khóa hiện tại và sang phải nếu lớn hơn, cho đến khi gặp vị trí con rỗng rồi tạo nút mới tại đó.
Độ sâu của gốc bằng . Độ sâu của một nút khác là số cạnh trên đường đi từ gốc đến nút đó.
Có một bộ đếm , ban đầu bằng . Sau khi chèn mỗi phần tử, cộng độ sâu của nút vừa được chèn vào , rồi in giá trị hiện tại của .
Phần tử đầu tiên là gốc nên có độ sâu và giá trị đầu tiên được in cũng là .
Input
Dòng đầu chứa số nguyên .
dòng tiếp theo lần lượt chứa . Dãy này là một hoán vị của .
Output
In đúng dòng. Dòng thứ là giá trị của bộ đếm ngay sau khi chèn .
Subtask
Subtask 1 (20 điểm): .
Subtask 2 (30 điểm): .
Subtask 3 (50 điểm): .
Trong tất cả các subtask, là một hoán vị của các số nguyên từ đến .
Ví dụ
Input
8
3
5
1
6
8
7
2
4
Output
0
1
2
4
7
11
13
15
Giải thích
Các nút mới được chèn lần lượt có độ sâu .
Bộ đếm bắt đầu từ . Cộng dồn các độ sâu trên sau từng lần chèn thu được , đúng bằng tám dòng output.