SP9138 PYRSUM2 - Pyramid Sums 2

题目描述

这是题目 [PYRSUM](../PYRSUM) 的升级版。 Tommy 正在将正方形积木堆叠成从 1 到 1000000(即 $10^6$)编号的列。为了避免记录每个积木具体位置的繁琐工作,他选择描述一组二维金字塔来构造他想要的形状。每个金字塔的高度 $H = (W + 1) / 2$,需要的积木数量 $N = H^2$,因此他可以轻松计算出总共需要多少积木。 然而,计算在某两个列范围内(含边界)总共积木的数量就不那么简单了。给定一组操作指令,每条指令有两种类型: - “build \[中心\] \[宽度\]”:在 \[中心\] 位置建造一个宽为 \[宽度\] 的金字塔。 - “count \[左边界\] \[右边界\]”:统计在这两个列之间(包含左右边界)的积木总数。 你的任务是尽可能快速地回答这些查询。

输入格式

输入的第一行包含一个整数 $N$($1 \le N \le 200000$),表示要执行的操作数量。 接下来有 $N$ 行,每行表示一个操作(如上所述)。

输出格式

对于每个“count”查询,输出结果于单独的一行。在每个测试用例的输出结束后,添加一个空行。 **请使用 64 位计数器,因为结果可能超出 32 位整数的范围!** **本翻译由 AI 自动生成**