#P4661. 第2题-公共子序列

第2题-公共子序列

题目内容

给定两个长度为 nn 的排列 ppqq (均为 11 ~ nn 的一个排列,元素两两不同),请你在它们的公共子序列中,找到一条字典序最大的序列并输出。

名词解释:

【字典序】对两序列从左到右比较第一个不同的元素,较大者字典序更大;若一个序列是另一个序列的前缀,则更长的序列字典序更大。

【子序列】子序列为从原序列中删除任意个(可以为零、可以为全部)元素得到的新序列。

【数组公共子序列】如果数组 aa 的一个子序列 aa' 与数组 bb 的一个子序列 bb' 完全相等,那么子序列 a,ba',b' 是数组 a,ba,b 的一个公共子序列。

输入描述

第一行输入一个整数 n(1n2×105)n(1≤n≤2×10^5),表示排列的长度。

第二行输入 nn 个整数 p1,p2,...,pnp_1,p_2,...,p_n,表示排列 pp

第三行输入 nn 个整数 q1,q2,...,qnq_1,q_2,...,q_n,表示排列 qq

保证 ppqq 都是 11~nn 的排列。

输出描述

第一行输出一个整数 kk,表示答案序列的长度。

第二行输出 kk 个整数,为这条字典序最大的公共子序列。

样例1

输入

5
2 5 3 1 4
5 2 4 3 1

输出

2
5 4

说明

两序列的公共子序列中,以 55 开头后,能够继续选择的最大元素为得到 [5,45,4]。与 [5,15,1] 相比,第二个元素更大,因此 [5,45,4] 的字典序更大