首先,我们先确定,最长的曼哈顿距离只可能为 x1+y2-(x2+y2) 和 x1-y1-(x2-y2) 所以我们只需要维护四个值,
分别代表 max(x+y) ; max(x-y) ; min(x+y) ; min(x-y) ;
因此答案也就是 max(max(x+y)-min(x+y),max(x-y)-min(x-y))。
1 const maxn=3000000; 2 var maxadd,minadd,maxdec,mindec,i,a,b,n:longint; 3 function max(a,b:longint):longint; 4 begin 5 if a>b then exit(a) 6 else exit(b); 7 end; 8 function min(a,b:longint):longint; 9 begin 10 if a<b then exit(a) 11 else exit(b); 12 end; 13 begin 14 minadd:=maxn; mindec:=maxn; 15 readln(n); 16 for i:=1 to n do 17 begin 18 readln(a,b); 19 maxadd:=max(maxadd,a+b); 20 minadd:=min(minadd,a+b); 21 maxdec:=max(maxdec,a-b); 22 mindec:=min(mindec,a-b); 23 end; 24 writeln(max(maxadd-minadd,maxdec-mindec)); 25 end.
(转载请注明出处:http://www.cnblogs.com/Kalenda/)
时间: 2024-11-19 18:09:18