百度在线笔试题-裁减网格纸

度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。 
输入描述:
第一行一个数n(2≤n≤1000)表示点数,接下来每行一对整数xi,yi(-1e9<=xi,yi<=1e9)表示网格上的点


输出描述:
一行输出最小面积

输入例子:
2
0 0
0 3

输出例子:
9

 

// Java版本
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
/*

2
0 0
0 3


 */
    public static int min(int a[]){
        int min=Integer.MAX_VALUE;
        for(int i=0; i<a.length; i++){
            if(a[i]<=min){
                min=a[i];
            }
        }
        return min;
    }
    public static int max(int a[]){
        int max=Integer.MIN_VALUE;
        for(int i=0; i<a.length; i++){
            if(a[i]>=max){
                max=a[i];
            }
        }
        return max;
    }

    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
              int n=input.nextInt();
              int x[]=new int[n];
              int y[]=new int[n];
              for(int i=0; i<n; i++){
                  x[i]=input.nextInt();
                  y[i]=input.nextInt();
              }
              int minx=min(x);
              int maxx=max(x);
              int miny=min(y);
              int maxy=max(y);
              
              int xlen=maxx-minx;
              int ylen=maxy-miny;
              
              if(ylen>xlen){
                  BigInteger bigInteger=new BigInteger(String.valueOf(ylen));
                  System.out.println(bigInteger.multiply(bigInteger));
              }else{
                  BigInteger bigInteger=new BigInteger(String.valueOf(xlen));
                  System.out.println(bigInteger.multiply(bigInteger));

              }
            
             
        }
        input.close();
    }
}

 

 
 
 
posted @ 2015-09-28 15:48  stonehat  阅读(449)  评论(0编辑  收藏  举报