SIMD12C.文件系统

传统题 时间 2000 ms 内存 256 MiB 9 尝试 11 已通过 3 标签

文件系统

题目描述

你需要模拟一个只有目录和普通文件的文件系统。根目录的路径为 /,目录或文件名只含小写英文字母和数字。一个目录内不会同时存在两个同名对象。所有输入操作均保证合法:所引用的路径在操作发生时存在,创建时目标名称尚不存在,移动时目标是目录,且不会把一个目录移动到它自己的子树中。根目录不会被删除或移动。

系统依次执行 qq 条指令:

  • MK path:创建一个空目录。path 的最后一段是新目录名,其父目录已经存在。
  • TOUCH path s:创建一个大小为 ss 的普通文件。
  • RM path:删除该文件或目录;删除目录会递归删除它的全部子树。
  • MV src dst:将文件或目录 src 移动到已有目录 dst 下,名称不改变。
  • Q pathpath 一定是目录。输出该目录完整子树中的普通文件数量,以及这些文件大小之和。

目录深度(根目录深度为 00)在任何时刻均不超过 4040。注意路径在移动后会改变;每条指令都应按照此前操作后的当前文件系统解释。

输入格式

第一行一个整数 qq1q2000001 \le q \le 200000)。

接下来 qq 行,每行一条指令。所有路径长度总和不超过 5×1065 \times 10^6,每个文件大小满足 1s1091 \le s \le 10^9

输出格式

对每条 Q 指令输出一行两个整数:该目录子树内的普通文件数量和文件大小总和。

样例

样例 1

输入:

10
MK /a
MK /b
TOUCH /a/x 5
MK /a/c
TOUCH /a/c/y 7
Q /a
MV /a/c /b
Q /a
Q /b
RM /a/x

输出:

2 12
1 5
1 7

在线编程 IDE

建议全屏模式获得最佳体验