#BST0000007. Predecessor trong BST (Inorder Predecessor in a BST)
Predecessor trong BST (Inorder Predecessor in a BST)
Predecessor trong BST (Inorder Predecessor in a BST)
Nguồn: Phước Hưng OJ
Phiên bản: Phước Hưng OJ Extended
Đề bài
Dựng BST từ dãy theo đúng thứ tự chèn; nếu một khóa đã có trong cây thì lần chèn lặp lại bị bỏ qua.
Cho một khóa được bảo đảm tồn tại trong cây. Inorder predecessor nghiêm ngặt của là khóa lớn nhất trong BST có giá trị nhỏ hơn .
Hãy tìm inorder predecessor nghiêm ngặt của . Nếu không có khóa nào nhỏ hơn , predecessor không tồn tại.
Input
Dòng đầu chứa số nguyên .
Dòng thứ hai chứa số nguyên theo thứ tự chèn.
Dòng thứ ba chứa số nguyên .
Output
Nếu predecessor của tồn tại, in khóa đó.
Nếu không tồn tại, in NONE.
Subtask
Subtask 1 (20 điểm): .
Subtask 2 (30 điểm): .
Subtask 3 (50 điểm): .
Trong tất cả các subtask, và là số nguyên có dấu 64-bit; khóa trùng bị bỏ qua khi dựng cây và được bảo đảm thuộc tập khóa còn lại của BST.
Ví dụ
Input
7
8 3 10 1 6 14 4
6
Output
4
Giải thích
Các khóa nhỏ hơn trong cây là . Trong số đó, khóa lớn nhất là . Vì vậy inorder predecessor nghiêm ngặt của là .