🐷大肚肚
CF-35B普及+/提高

取箱子

2.0s💾 64MB

📋 题目描述

有一个 n×mn \times m 的一个架子,胖球肚进行 kk 次操作,每次操作她会往这个架子上的一个位置放入或拿出一个箱子。如果胖球肚要放入一个箱子,她会先看这个位置上是不是已经有箱子了,如果有则放入右边的位置,如果右边也有箱子,则以此类推。如果到了此行的第 mm 列还有箱子,她会放入下一行的第一列,并重复上述操作。如果到最后都找不到,她会把箱子丢掉,不放到架子上。

如果胖球肚要拿出一个箱子,你需要输出这个箱子所在的坐标 (i,j)(i,j),表示这个箱子被放在了第 ii 行第 jj 列,并拿走它。这个箱子可能不存在

注意:需要文件输入输出,输入文件为 input.txt,输出文件为 output.txt

📥 输入格式

第一行包含三个整数 n,m,kn,m,k1n,m301 \leq n,m \leq 30 ),意义如题面描述。接下来 kk1k20001 \leq k \leq 2000 )行,每行描述一个操作,操作有 22 种形式:

+1 x y id:在第 xx 行第 yy 列( 1xn,1ym1 \leq x \leq n,1 \leq y \leq m )放入一个名为 idid 的箱子,放置规则如题中描述;

-1 id:拿走名为 idid 的箱子,此操作需要你输出这个箱子所在位置坐标,如果没有则输出 -1 -1

这里 idid 为长度不超过 1010 的小写拉丁文字母串。

📤 输出格式

若干行,依次为对于每一个操作 22,输出这个箱子位置的横坐标和纵坐标,横坐标和纵坐标之间用一个空格隔开。

📝 样例 1

输入
2 2 9
+1 1 1 cola
+1 1 1 fanta
+1 1 1 sevenup
+1 1 1 whitekey
-1 cola
-1 fanta
-1 sevenup
-1 whitekey
-1 cola
输出
1 1
1 2
2 1
2 2
-1 -1

📝 样例 2

输入
2 2 8
+1 1 1 cola
-1 cola
+1 1 1 fanta
-1 fanta
+1 1 1 sevenup
-1 sevenup
+1 1 1 whitekey
-1 whitekey
输出
1 1
1 1
1 1
1 1

📚 来源

💡 题目讲解

1

理解题意

胖球肚有一个 n×mn \times m 的架子(nnmm 列),每个格子可以放一个箱子。她进行 kk 次操作,每次要么放箱子,要么取箱子。


📦 放箱子 +1 x y id

胖球肚想把名为 id 的箱子放在第 xx 行第 yy 列。但那个位置可能已经有箱子了!

规则就像在超市排队结账——如果当前柜台有人,就往右挪一格;右边也有人,继续往右;到最右边还没空位,换到下一行第一列接着找。整个架子都满了就丢掉。


📤 取箱子 -1 id

胖球肚想把名为 id 的箱子拿走。你要输出这个箱子在几行几列,然后把它清空。

如果找遍整个架子都没有这个箱子(可能之前被拿走了,或者根本没放进去),输出 -1 -1

1 / 5