A85851.「POI2010」单调性 2 Monotonicity 2
省选/NOI-
通过率:0%
时间限制:1.00s
内存限制:256MB
题目描述
本题是来自 POI 2010 第三阶段的单调性一题的加强版,但并没有在那次比赛中被使用。
译自 POI 2010 「Monotonicity 2」
对于一个整数序列 a1,a2,...,an,我们定义其“单调序列"为一个由 <,> 和 = 组成的符号序列 s1,s2,...sn−1,其中符号 si 表示 ai 和 ai+1 之间的关系。例如,数列 2,4,3,3,5,3 的单调序列为 <, >, =, <, >。
对于整数序列 b1,b2,...,bn+1 以及其单调序列 s1,s2,...,sn,如果符号序列 s1′,s2′,...,sk′ 满足对所有 1≤i≤n 有 si=s((i−1)modn)+1′,我们就说序列 s1,s2,...,sn 「实现」了序列 s1′,s2′,...,sk′。也就是说,序列 s1,s2,...,sn 可以通过重复多次 s1′,s2′,...,sk′ 序列并删除一个后缀得到。例如,整数数列 2,4,3,3,5,3 至少实现了以下符号序列:
- <, >, =
- <, >, =, <, >
- <, >, =, <, >, <, <, =
- <, >, =, <, >, =, >, >
给定一个整数序列 a1,a2,...,an 以及一个单调序列 s1,s2,...,sk,求出原整数序列最长的子序列 ai1,ai2,...,aim(1≤i1<i2<...<im≤n) 使得前者的单调序列实现后者的符号序列。
输入格式
第一行包含用空格分隔的两个整数 n,k,分别表示整数序列 (ai) 的长度和单调序列 (sj) 的长度。
第二行包含用空格分隔的 n 个整数,表示序列 ai.
第三行包含用空格分隔的 k 个符号,表示符号序列 sj.
输出格式
第一行输出一个整数 m,表示序列 a1,a2,...,an 的最长的「实现」了单调序列 s1,s2,...,sn 的子序列。
第二行输出任意一个这样的子序列 ai1,ai2,...,ain,元素之间用空格分隔。
输入输出样例
输入#1
7 3 2 4 3 1 3 5 3 < > =
输出#1
6 2 4 3 3 5 3
说明/提示
对于 100% 的数据, 1 \le n \le 500000,1 \le k \le 500000 , 1 \le a_i \le 1000000 , s_j \in \{<, >, =\} 。
Translated by vincent163