AT_scpc2026_div2_c Rearrangement
题目描述
给定一个长度为 $N$ 的整数数组 $A=[A_1,\dots,A_N]$ 和一个长度为 $M$ 的整数数组 $B=[B_1,\dots,B_M]$。
请你找到 $A$ 的一种重排方式,使得 $B$ 作为连续子序列出现的次数最多。这里,“重排”指的是将 $A$ 全部元素经过某种排列后组成新的数组 $A'$,满足以下条件:
- $A'$ 是一个长度为 $N$ 的整数数组,存在一个 $1,\dots,N$ 的排列 $P$,使得 $A'_i=A_{P_i}\ (1 \le i \le N)$。
什么是连续子序列?**连续子序列**是从原序列中按顺序、连续地取出若干元素所得到的序列。例如,在序列 $[1,2,3,4]$ 中,$[2,3]$ 是它的连续子序列,而 $[1,3]$ 不是。一个序列中,同一模式的多个连续子序列可以重叠。例如,在 $[1,2,1,2,1]$ 中,$[1,2,1]$ 总共出现了 $2$ 次。
什么是排列?**排列**指的是一个长度为 $N$ 的序列,包含 $1$ 到 $N$ 的所有整数且各不相同。例如,$[2,1,4,3]$ 是一个排列,而 $[4,2,1,1]$ 和 $[1,2,3,5]$ 都不是。
输入格式
从标准输入读取数据,格式如下:
> $N$ $M$ $A_1$ $A_2$ $\dots$ $A_N$ $B_1$ $B_2$ $\dots$ $B_M$
输出格式
输出一种 $A$ 的重排方式,能够使 $B$ 作为连续子序列出现次数达到最大。用空格分隔输出每个元素。如果有多种重排方式,都可以输出任意一种。
说明/提示
### 数据范围
- $1 \leq M \leq N \leq 1\,000\,000$
- $0 \leq A_i,B_i \leq 1\,000\,000$
- 所有输入的数字都是整数。
由 ChatGPT 5 翻译