#4281. 重新排列卡片(Reorder Cards)

重新排列卡片(Reorder Cards)

题目描述

HWHW 张卡片排列在一个 HHWW 列的矩阵中。对于每个 i=1,,Ni=1,\ldots,N,从上往下第 AiA_i 行、从左往右第 BiB_i 列的卡片上写有数字 ii。其他 HWNHW-N 张卡片上没有写任何东西。

我们将对这些卡片重复执行以下两种操作,直到无法继续:

  1. 如果存在一行没有写有数字的卡片,则移除该行的所有卡片,并将剩余的卡片向上移动。

  2. 如果存在一列没有写有数字的卡片,则移除该列的所有卡片,并将剩余的卡片向左移动。

请找出操作结束后每张写有数字的卡片的位置。可以证明,无论以何种顺序执行操作,最终结果都是唯一确定的。

输入格式

输入从标准输入中给出,格式如下:

HH WW NN

A1A_1 B1B_1

...

ANA_N BNB_N

输出格式

输出 NN 行:如果操作结束后,写有数字 ii 的卡片位于从上往下第 CiC_i 行、从左往右第 DiD_i 列,则第 ii 行应输出 CiC_iDiD_i,中间用空格分隔。

样例

4 5 2
3 2
2 5
2 1
1 2
1000000000 1000000000 10
1 1
10 10
100 100
1000 1000
10000 10000
100000 100000
1000000 1000000
10000000 10000000
100000000 100000000
1000000000 1000000000
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10

样例解释

【样例1说明】
让我们用 * 表示没有写任何内容的卡片。最初,卡片的排列如下:

*****
****2
*1***
*****

操作结束后,卡片的排列如下:

*2
1*

这里,写有 1 的卡片位于从上往下第 2 行、从左往右第 1 列,写有 2 的卡片位于从上往下第 1 行、从左往右第 2 列。

数据范围

  • 1H,W1091 \leq H,W \leq 10^9
  • 1Nmin(105,HW)1 \leq N \leq \min(10^5,HW)
  • 1AiH1 \leq A_i \leq H
  • 1BiW1 \leq B_i \leq W
  • 所有 (Ai,Bi)(A_i,B_i) 对都是不同的
  • 输入中的所有值都是整数。

来源

  • AtCoder ABC213C