两点(x1,y2)与(x2,y2)之间的曼哈顿距离为|x1-x2|+|y1-y2|,在上图中,红蓝黄三色线都表示两黑点间的曼哈顿距离。
现在Uncle Bird有n个点(xi,yi),显然,你可以算出任意两个点之间的曼哈顿距离。
那么问题来了:请你帮Uncle Bird算出任意两点之间曼哈顿距离的最大值。
小提示:因为点的数量很多(10^5),不能直接枚举两点计算距离,需要一个小小的trick。
Input
第一行输入一个正整数t(t<=10),表示测试数据组数。
每组测试数据的第一行输入一个正整数n(2<=n<=100000),表示点的个数。
接下来n行,每行输入两个用空格分开的整数xi和yi(-10000<=xi<=10000,-10000<=yi<=10000),表示第i个点的坐标。
-------------------------------------------------------------------------------------------------------------------我是分界线-----------------------------------------------------------------------------------------------------
这题是关于manhattan distance的一个性质。考虑取一个在所有点左下角的点为基准A(x0,y0),那么对于满足x1<=x2和y1<=y2的点对B(x1,y1)和C(x2,y2),BC(曼哈顿距离,下同)=AC-AB。同理取右下角基准点,可以处理x1<=x2和y1>=y2的的点对的距离。这样,将两两点之间曼哈顿距离转换为到基准点的距离之差。那我们只需要用到基准点距离最大值减去最小值,就得到了两点之间距离最大值。对两个基准分别做这个操作然后取较大的就可以了。复杂度o(n)。