T95223 [DBOI2019]分块

题目背景

```cpp 众所周知,分块世界第一可(ku)爱(ai)。 ——1jia1 ``` 你正在写分块,这时家长进来了,于是您装作在打galgame。 ![](https://cdn.luogu.com.cn/upload/pic/67834.png )

题目描述

分块是一种数据结构,它是把长度为$n$的序列分成$\sqrt n$块(向上取整),每块大小(即内含元素个数)为$\sqrt n$(向下取整)。容易得知,对于不为完全平方数的$n$,最后一个块的大小并不是$\sqrt n$。 分块娘现在有一个$n*n$的矩形,里面有$n*n$个数字。她已经看够了“$\sqrt{}$”,于是想换个花样,把矩形均分成$\frac {1} {2}n*\frac {1} {2}n$的$4$块。分完后,她又把$4$小块每块再均分成$4$块,于是有了$16$个小小块。 这时,splay娘和two-pointers娘走了过来。看到分块娘正在做$log$的事情,splay娘嘲笑她太慢了。分块娘很生气,于是应下了splay娘的根号挑战: 分块娘每次把所有矩形分一次前(第一次分则分$n*n$的大矩形),需要分别计算出每个矩形的莫队值和kdtree值,然后把这些答案告诉splay娘和two-pointers娘。 一个矩形的莫队值定义为:$\sum_{i=0}^{∞} cnt[i]^2$,其中$cnt[i]$表示数字i在该矩形内的出现次数。 一个矩形的kdtree值定义为:$\min \left | a[i][j]-a[k][l] \right | $,其中$a[i][j]$,$a[k][l]$均为矩形内的数,且$a[i][j]\neq a[k][l]$。如果无法找到满足条件的$i$和$j$,则为矩形中最小的数。

输入格式

第一行,输入一个正整数$n$($n=2^{2k}$,$k\in \mathbb{N}^+$),表示矩形大小为$n*n$。 接下来$n$行,每行输入$n$个非负整数(不超过$10^9$),这$n*n$个数描述了这个$n*n$的矩形内部的所有数。

输出格式

输出$1+\log_2 n$行,每行输出$2$个数,分别表示第$i-1$次分矩形前,所有矩形的莫队值之和,kdtree值之和。

说明/提示

【样例#$1$说明】 所有矩形的莫队值为: ``` 38 8 4 6 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ``` 所有矩形的kdtree值为: ``` 1 8 1 2 1 1 9 2 6 1 9 8 9 0 8 1 7 0 6 0 4 ``` Subtask#$1$($30$分): $1\leq n\leq 32$。 Subtask#$2$($30$分): $1\leq n\leq 256$。 Subtask#$3$($40$分): $1\leq n\leq 512$。 所有测试点的时间限制统一为$\text{1s}$,内存限制统一为$\text{125M}$。 ### 题目提供者:$1jia1$