logo AlgoBeat OnlineJudge
登录 注册

#10111. [TopCoder 8048] PartialSeries

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: AlgoBeat 官方账号

题目描述

我们称一个数列中的某个数为局部极大值,如果它在数列中的前一个数和后一个数都严格小于它。类似地,称一个数为局部极小值,如果前一个数和后一个数都严格大于它。局部极大值和局部极小值统称为局部极值。注意,数列的第一个元素和最后一个元素不能成为局部极值。

现在给定一个部分缺失的数列,其中某些位置上的数丢失了。已知所有丢失的数都来自一个给定的可用数字集合,每个可用数字最多使用一次。你的任务是填充缺失的位置,使得填充完成后整个数列的局部极值总数尽可能少。如果有多种填充方案都能达到最少的局部极值数,则选择字典序最小的方案:即首先让第一个数尽可能小;若还有多种,则让第二个数尽可能小;依此类推。

输入格式

第一行包含若干个整数,表示部分数列 的元素,每个元素要么为非负整数,要么为 表示缺失。
第二行包含若干个整数,表示可用数字集合 的元素。

输出格式

一行,若干个整数,表示填充完成后字典序最小的最优数列,数字之间用空格分隔。

样例

样例 #1

样例输入 #1

-1 -1 -1 -1 -1
1 2 3 4 5

样例输出 #1

1 2 3 4 5

样例解释 #1

只需按递增顺序填入,即可避免任何局部极值。


样例 #2

样例输入 #2

1 2 -1 4 5
10

样例输出 #2

1 2 10 4 5

样例解释 #2

只有一种选择, 必须成为局部极大值,而 是局部极小值,无法避免。

数据范围与提示

数据范围

  • 的长度 满足
  • 的长度 满足
  • 中的每个元素为 的整数。
  • 中的每个元素为 的整数。
  • 保证 中元素个数不少于 的个数。