度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。
输入描述:
第一行一个数n(2≤n≤1000)表示点数,接下来每行一对整数xi,yi(-1e9<=xi,yi<=1e9)表示网格上的点
输出描述:
一行输出最小面积
输入例子:
2
0 0
0 3
输出例子:
9
Solution 1:
#include <iostream> using namespace std; struct Point{ int x; int y; }; int main(){ // write code here Point *pt; int n; while(cin >> n){ pt = new Point[n]; for(int i = 0; i < n; ++i){ cin >> pt[i].x >> pt[i].y; } int minX, maxX; int minY, maxY; minX = maxX = pt[0].x; minY = maxY = pt[0].y; for(int i = 1; i < n; ++i){ minX = (minX <= pt[i].x) ? minX : pt[i].x; maxX = (maxX >= pt[i].x) ? maxX : pt[i].x; minY = (minY <= pt[i].y) ? minY : pt[i].y; maxY = (maxY >= pt[i].y) ? maxY : pt[i].y; } int lengthX = maxX - minX; int lengthY = maxY - minY; int result = (lengthX > lengthY) ? lengthX : lengthY; cout << result * result << endl; } return 0; }
Solution 2: