Farmer John 的农场上有N(1<=N<=1000)棵树。在上过计算机课后,Betsy发现所有的树实际上都是严格的二叉树。二叉树的每个非叶结点都恰好有两个子结点。Betsy给每个结点一个数表示以这个结点为根的子树的叶结点数。
然后,Betsy按照先序遍历的结果把和结点相关的数列作为它的特征序列。但是,她只列出了与根结点和所有的左子结点相关的数。例如对下面的树:
                              *7
                              /  \
                             /    \
                            /      \
                          *4       3
                          /  \     /  \
                        *1   3  *1   2
                            /  \     /  \
                          *2   1  *1   1
                          /  \
                        *1   1
用*表示的是Betsy列出的结点。这棵树的特征序列为:(7 4 1 2 1 1 1)。
在用这种方法表示完所有的树后,Betsy发现:
•所有的树有同样多的叶结点,
•所有的树有不同的特征序列,
•所有可能的严格的二叉树都在农场上。
所以,作为一个有创造力的奶牛,她决定把这些特征序列排序。给出一棵树的特征序列,求出紧接着的一个序列。
输入格式
第1行:N,特征序列的长度。
第2行:N个用空格隔开的数,表示一棵树的特征序列。
输出格式
单独的一行,表示按字典排序后所给序列的后一个序列。如果所给序列是最后一个序列,则输出0。记住:输入和输出的序列代表的树要有相同的叶结点数。
样例输入(nextree.in)
5
5 3 2 1 1
样例输出(nextree.out)
5 4 1 1 1
[此贴子已经被作者于2007-4-28 11:22:40编辑过]



											
	    

	