CF1799A Recent Actions

题目描述

在 Codeforces 上,“Recent Actions” 区域显示最近 $n$ 条动态的帖子。 最初,该区域中有帖子 $1, 2, \ldots, n$(从上到下排列)。此外,还有无限多个不在该区域中的帖子,编号为 $n+1, n+2, \ldots$。 当帖子 $p$ 有最近动态时: - 如果它已经在“Recent Actions”区域中,则它会从当前位置移动到最上面。 - 否则,它会被添加到最上面,并且最下面的帖子会被移出“Recent Actions”区域。 你知道接下来的 $m$ 次最近动态将会发生在帖子 $p_1, p_2, \ldots, p_m$ 上($n+1 \leq p_i \leq n+m$),发生的时间分别为 $1, 2, \ldots, m$。注意,最近动态只会发生在编号 $\geq n+1$ 的帖子上。 对于每个帖子 $i$($1 \leq i \leq n$),请找出它第一次被移出“Recent Actions”区域的时间,或者说明它不会被移出。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 5 \cdot 10^4$),分别表示“Recent Actions”区域的大小和动态的数量。 下一行包含 $m$ 个整数 $p_1, p_2, \ldots, p_m$($n+1 \leq p_i \leq n+m$)。 保证所有测试用例中 $n$ 的总和与 $m$ 的总和不超过 $5 \cdot 10^4$。

输出格式

对于每个测试用例,输出 $n$ 个整数 $t_1, t_2, \ldots, t_n$,其中 $t_i=-1$ 表示帖子 $i$ 不会被移出,否则 $t_i$ 表示帖子 $i$ 第一次被移出的时间($1 \leq t_i \leq m$)。

说明/提示

在第一个测试用例中,唯一的帖子 $1$ 会在时刻 $1$ 被移出,并被帖子 $2$ 替换。 在第二个测试用例中,“Recent Actions”区域的变化如下(从上到下排列): 1. 时刻 $1$ 前为 $[1, 2, 3]$,时刻 $1$ 后为 $[5, 1, 2]$。帖子 $3$ 被移出。 2. 时刻 $2$ 前为 $[5, 1, 2]$,时刻 $2$ 后为 $[4, 5, 1]$。帖子 $2$ 被移出。 帖子 $1$ 不会被移出。 在第三个测试用例中,“Recent Actions”区域的变化如下(从上到下排列): 1. 时刻 $1$ 前为 $[1, 2, 3, 4]$,时刻 $1$ 后为 $[5, 1, 2, 3]$。帖子 $4$ 被移出。 2. 时刻 $2$ 前为 $[5, 1, 2, 3]$,时刻 $2$ 后为 $[9, 5, 1, 2]$。帖子 $3$ 被移出。 3. 时刻 $3$ 前为 $[9, 5, 1, 2]$,时刻 $3$ 后为 $[9, 5, 1, 2]$。没有变化。 4. 时刻 $4$ 前为 $[9, 5, 1, 2]$,时刻 $4$ 后为 $[5, 9, 1, 2]$。顺序发生了变化。 5. 时刻 $5$ 前为 $[5, 9, 1, 2]$,时刻 $5$ 后为 $[7, 5, 9, 1]$。帖子 $2$ 被移出。 帖子 $1$ 不会被移出。 由 ChatGPT 4.1 翻译