#ABC213C. [ABC213C] 重新排列卡片(Reorder Cards)

[ABC213C] 重新排列卡片(Reorder Cards)

题目描述

HWH * W 张卡片排列在一个 HHWW 列的矩阵中。

对于每个 i=1,,N i=1,\ldots,N ,从上往下第 AiA_i 行、从左往右第 BiB_i 列的卡片上写有数字 ii

其他 HWNH*W−N 张卡片上没有写任何东西。

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

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

请找出操作结束后每张写有数字的卡片的位置。

可以证明,无论以何种顺序执行操作,最终结果都是唯一确定的。

输入格式

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

H H W W N N

A1 A_1 B1 B_1

\dots

AN A_N BN B_N

输出格式

输出 NN 行:如果操作结束后,写有数字 ii 的卡片位于从上往下第 CiC_i 行、从左往右第 DiD_i 列,

则第 ii 行应输出 CiC_iDiD_i,中间用空格分隔。

输入输出样例 #1

输入 #1

4 5 2
3 2
2 5

输出 #1

2 1
1 2

输入输出样例 #2

输入 #2

1000000000 1000000000 10
1 1
10 10
100 100
1000 1000
10000 10000
100000 100000
1000000 1000000
10000000 10000000
100000000 100000000
1000000000 1000000000

输出 #2

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 列。

数据范围

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