Problem:
Score : 500 points

Problem Statement

There are N points on the 2D plane, i-th of which is located on (x_i, y_i).
There can be multiple points that share the same coordinate.
What is the maximum possible Manhattan distance between two distinct points?

Here, the Manhattan distance between two points (x_i, y_i) and (x_j, y_j) is defined by |x_i-x_j| + |y_i-y_j|.

Constraints

2 \leq N \leq 2 \times 10^5

1 \leq x_i,y_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
x_1 y_1
x_2 y_2
:
x_N y_N

Output

Print the answer.

Sample Input 1

3
1 1
2 4
3 2

Sample Output 1

4

The Manhattan distance between the first point and the second point is |1-2|+|1-4|=4, which is maximum possible.

Sample Input 2

2
1 1
1 1

Sample Output 2

0

Solution in Java (OpenJDK 1.8.0) (judge verdict: Time Limit Exceeded)


import java.util.Scanner;

public class Main {

    public Main() {
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
int N=scan.nextInt();
int  A[]=new int [N] ;
int  B[]=new int [N];
int maxA=0;
        int maxB=0;
        int minA=0;
        int minB=0;

for(int i=0;i<N;i++){
    A[i]=scan.nextInt();
    B[i]=scan.nextInt();
    if(maxA<A[i]){maxA=A[i];}
    if(minA>A[i]){minA=A[i];}
    if(maxB<B[i]){maxB=B[i];}
    if(minB>B[i]){minB=B[i];}

}
int M=0;
int MA1=0;
int MB1=0;

        int MA2=0;
        int MB2=0;

for(int i=0;i<N;i++){if(((MA1<A[i]&&MA2>A[i])||(MA1>A[i]&&MA2<A[i]))&&((MB1<B[i]&&MB2>B[i])||(MB1>B[i]&&MB2<B[i]))){}
else{ if(Math.max(Math.abs(minA-A[i]),Math.abs(maxA-A[i]))+Math.max(Math.abs(minB-B[i]),Math.abs(maxB-B[i]))>M){   for(int j=i;j<N;j++){
        if(M<Math.abs(A[i]-A[j])+Math.abs(B[i]-B[j])){M=Math.abs(A[i]-A[j])+Math.abs(B[i]-B[j]);
        MA1=A[i];
            MA2=A[j];
            MB1=B[i];
            MB2=B[j];

        }

    }}}

}
System.out.println(M);

    }
}