#P10300. [THUWC 2020] 工资分配

[THUWC 2020] 工资分配

题目描述

月末,一家公司的老板给公司内的 kk 个员工(他们被编号为 1k1\sim k)准备了一份工资的分配方案。这份方案可以用一个长度为 kk 的序列 aa 表示,其中 aia_i 表示第 ii 个人的工资。现在,这份分配方案放在办公室的桌上,无人看管。

一些员工决定通过替换的方式替换掉这份工资分配方案,来使得自己获得更多的工资。于是,一些员工自己准备了一个自行伪造、不会被老板察觉的分配方案 bb(也是一个长度为 kk 的序列),并选择在一个时刻潜入办公室。他会偷看当前放在办公桌上的分配方案 aa^{'},如果该员工编号为 iibi>aib_i > a^{'}_ i,他就会把整个分配方案替换成 bb。为了保证替换成功,一个员工可能会在多个时刻潜入办公室,并且可能会伪造不同的分配方案。但同一时刻最多有一个员工潜入办公室。

假设一天总共有 nn 个时刻有员工潜入,我们将这些时刻按时间顺序从 11nn 编号。现在,你知道了在每个时刻 tt,潜入办公室的员工 ptp_t 和他在 tt 时刻伪造的分配方案 btb_t。现在给出 qq 个询问,每次询问会给出一个老板的初始分配方案,请你计算出最后放在桌面上的分配方案。

输入格式

第一行三个整数 nnqqkk,表示时刻的个数、询问的个数和员工的个数;

接下来 nn 行,每行 k+1k+1 个整数 pt,bt,1,,btkp_t, b_{t,1},\cdots, b_{t_k},表示 tt 时刻潜入的员工和他准备的分配方案;

接下来 qq 行,每行 kk 个整数 a1,,aka_1, \cdots, a_k,表示老板的初始分配方案。

输出格式

输出 qq 行,每行 kk 个整数,表示最后的方案。

5 10 3
1 7 2 5
2 1 4 10
3 2 6 3
1 8 1 4
2 7 3 5
4 7 8
2 2 6
9 10 6
9 3 4
8 1 6
10 6 10
4 9 2
4 1 10
7 7 8
10 3 2

7 3 5
7 3 5
9 10 6
7 3 5
7 3 5
10 6 10
7 3 5
7 3 5
7 3 5
7 3 5

提示

【子任务】

存在 20% 的数据,n,q1,000n,q\le 1,000

存在另外 10% 的数据,k=1k=1

对于所有的数据,n,q105,k20n,q\le 10^5, k\le 20

【提示】

本题输入、输出规模较大,建议使用 scanf/printf 进行输入输出。如果使用 cin/cout,建议在 main 函数开头加上 std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);