ZUFEOJ
Home
ProblemSet
Source/Category
Contest
Status
Ranklist
F.A.Qs
ContestProblemSetList
Login
Register
问题 B: Tree Construction
内存限制:256 MB
时间限制:2 S
题面:传统
评测方式:文本比较
上传者:
提交:1
通过:1
返回比赛
提交
提交记录
题目描述
在编程课上,Vasya被分配了一道难题。然而,他不知道如何编码,也无法在互联网上找到解决方案,所以他请你帮忙。
您将得到一个由n个不同整数组成的序列a,用于构造二叉搜索树。以下是对构造过程的正式描述:
1. 第一个元素a1成为树的根。
2. 元素
a
2
,
a
3
,...,
a
n
,, ,一个接一个地添加。要添加元素ai,需要从根开始遍历树,并使用以下规则:
如果ai大于当前节点中的值,则其右子节点将成为当前节点。否则,当前节点的左子节点将成为新的当前节点。
如果在某个时候没有所需的子节点,则创建新节点,并为其分配值ai,使其成为当前节点的相应子节点。
题目也可以理解为:给定一个有 N 个数 组成的序列,在此基础上构建一棵二叉排序树,求每个节点(根节点除外)的父节点的编号是多少。
输入格式
输入的第一行包含一个整数n(2≤n≤100000)-序列a的长度。
第二行包含n个不同的整数ai(1≤ai≤10
9
)-序列a本身。
输出格式
输出n-1个整数。对于所有i>1的情况,输出
每个节点(根节点除外)的父节点的编号是多少
Output
n
-1
integers. For all
i
>1
print the value written in the node that is the parent of the node with value
a
i
in it.
Examples
Input
3 1 2 3
Output
1 2
Input
5 4 2 3 1 6
Output
4 2 2 4
第一个例子:
第二个例子:
输入样例
复制
3 1 2 3
输出样例
复制
1 2
分类标签
cf675D
1800
data
structures
trees