P2745 [USACO5.3] 窗体面积Window Area
题目描述
你刚刚接手一项窗体界面工程。窗体界面还算简单,而且幸运的是,你不必显示实际的窗体。有 $5$ 种基本操作:
- 创建一个新窗体;
- 将窗体置顶;
- 将窗体置底;
- 删除一个窗体;
- 输出窗体可见部分的百分比(就是,不被其它窗体覆盖的部分)。
输入格式
在输入文件中,操作(不超过 $600$ 个)以如下的格式出现,每行一个。
- 创建一个新窗体:`w(I,x,y,X,Y)`;
- 将窗体置顶:`t(I)`;
- 将窗体置底:`b(I)`;
- 删除一个窗体:`d(I)`;
- 输出窗体可见部分的百分比:`s(I)`。
`I` 是每个窗体唯一的标识符,标识符可以是大小写字母或单个数字字符。输入文件中没有多余的空格。
$(x,y)$ 和 $(X,Y)$ 是窗体的对角。当你创建一个窗体的时候,它自动被“置顶”。你不能用已经存在的标识符来创建窗体,但是你可以删除一个窗体后再用已删除窗体的标识符来创建窗体。坐标用正整数来表示,并且所有的窗体面积都不为 $0$(即 $x\ne X$ 且 $y\ne Y$)。$x$ 坐标和 $y$ 坐标在 $[1,2^{15}-1]$ 的范围内。
当输入文件结束时,停止程序。
输出格式
只对于 `s(I)` 命令进行输出。当然,输入文件可能有许多 `s(I)` 命令(不超过 $500$ 次),所以输出文件应该是一个百分比的序列,每行一个,百分比是窗体可见部分的百分比。百分比应该四舍五入到三位小数(不用输出百分号 `%`)。
说明/提示
题目翻译来自 NOCOW。
USACO Training Section 5.3。