#P17055. [SGU263] Towers
[SGU263] Towers
题目描述
有一排 个格子,编号为 到 ,初始时均为空。机器人可以向指定格子放入若干方块;若该格子已有方块,新方块叠在原有方块之上。
对于 ,如果格子 均有正数个方块,并且格子 为空(或 )、格子 为空(或 ),则格子 到 上的方块构成一座塔。塔长为 。所有塔按从左到右编号;一座塔内部的列也按从左到右从 开始编号。
你需要依次处理以下命令。
操作命令
put x c:向全局编号为 的格子加入 个方块。tput t x c:向第 座塔的第 列加入 个方块。
查询命令
towers:输出当前塔的总数。cubes t:输出第 座塔中的方块总数。length t:输出第 座塔的长度。tcubes t x:输出第 座塔第 列中的方块数。
输入格式
第一行一个整数 ,表示命令数。接下来 行,每行是一条上述命令。
保证所有命令合法:格子编号均在 到 内;被引用的塔一定存在;列编号一定在对应塔内,映射到的格子编号也合法。任意格子上的方块数不会超过 。
输出格式
每个查询命令输出一行,格式必须与样例完全一致:
towers输出<答案> towerscubes t输出<答案> cubes in <t>th towerlength t输出length of <t>th tower is <答案>tcubes t x输出<答案> cubes in <x>th column of <t>th tower
不要按英语语法修改单复数或序数词。即使数字是 、 或 ,仍然输出 1 towers、1 cubes、1th、2th、3th。
数据范围
- 单个格子的最终方块数不超过
- 时间限制: 秒
- 内存限制: MiB
原题数据很大,输入输出效率会显著影响运行时间。
样例
输入
22
towers
put 2 5
put 1 6
put 3 6
put 3 3
towers
length 1
put 6 3
put 5 4
length 2
tcubes 2 1
tcubes 2 2
towers
cubes 1
cubes 2
put 4 3
towers
cubes 1
tput 1 6 50
cubes 1
tcubes 1 6
length 1
输出
0 towers
1 towers
length of 1th tower is 3
length of 2th tower is 2
4 cubes in 1th column of 2th tower
3 cubes in 2th column of 2th tower
2 towers
20 cubes in 1th tower
7 cubes in 2th tower
1 towers
30 cubes in 1th tower
80 cubes in 1th tower
53 cubes in 6th column of 1th tower
length of 1th tower is 6