CF411B Multi-core Processor

题目描述

研究中心 Q 开发了一种新的多核处理器。该处理器由 $n$ 个核心和 $k$ 个高速缓存单元组成。现在考虑该处理器的工作过程。 在每个周期中,每个核心都会收到一条指令:要么什么都不做,要么是内存单元的编号(表示该核心会向该单元写入信息)。收到指令后,核心会立即执行它。有时,在同一个周期内,多个核心会尝试向同一个单元写入信息。不幸的是,开发者没有想到如何解决核心之间的冲突,所以在这种情况下会发生死锁:所有这些核心和相关的内存单元都会被永久锁定。每个被锁定的核心都会忽略之后的所有指令,以后也不会有核心能够向被锁定的单元写入信息。如果有核心试图向某个已锁定的单元写入信息,它会被立即锁定。 开发团队希望分析死锁情况。因此,他们需要一个程序来模拟处理器在每个核心的指定指令下经历 $m$ 个周期的运行。幸运的是,这项有趣的工作交给了你。请你根据指令,在 $m$ 个周期中,确定每个核心被锁定的周期编号。如果某个核心在所有周期内都未被锁定,则该编号为 $0$。初始状态下,所有核心和所有内存单元都未被锁定。

输入格式

第一行包含三个整数 $n$、$m$、$k$,$1 \leq n, m, k \leq 100$。接下来有 $n$ 行,每行描述一个核心的指令。第 $i$ 行包含 $m$ 个整数 $x_{i1}, x_{i2}, ..., x_{im}$,$0 \leq x_{ij} \leq k$,其中 $x_{ij}$ 表示第 $i$ 个核心在第 $j$ 个周期要执行的指令。如果 $x_{ij} = 0$,则该指令为“什么都不做”。如果 $x_{ij}$ 是 $1$ 到 $k$ 之间的值,则表示“向编号为 $x_{ij}$ 的内存单元写入信息”。 我们假设核心编号为 $1$ 到 $n$,工作周期编号为 $1$ 到 $m$,内存单元编号为 $1$ 到 $k$。

输出格式

输出共 $n$ 行,第 $i$ 行包含一个整数 $t_i$,表示第 $i$ 个核心被锁定的周期编号。如果该核心不会被锁定,则输出 $0$;否则,输出其被锁定的周期编号。

说明/提示

由 ChatGPT 5 翻译