问题描述
给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内。长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内。
输入
测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标占一行,其中|x|和|y|小于 1 000 ;一对0 坐标标志着一个测试用例的结束。注意(0, 0)不作为任何一个测试用例里面的点。一个没有点的测试用例标志着整个输入的结束。
输出
对每个测试用例,在1行内输出2对整数,其间用一个空格隔开。第1对整数是长方形框左下角的坐标,第2对整数是长方形框右上角的坐标。
输入例子 1
-41 35\n26 45\n13 30\n0 0\n-5 13\n0 0\n0 0
输出例子 1
-41 30 26 45\n-5 13 -5 13
提示
我们可以发现横纵坐标的计算其实是独立的,对于每个坐标更新当前横纵坐标的最小值和最大值即可。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int x,y,x_max,y_max,x_min,y_min;
while((cin>>x)&&(cin>>y))
{
if((x==0)&&(y==0))
break;
x_max=x;
x_min=x;
y_max=y;
y_min=y;
while(1)
{
cin>>x;
cin>>y;
if((x==0)&&(y==0))
break;
if(x>x_max)
x_max=x;
if(x<x_min)
x_min=x;
if(y>y_max)
y_max=y;
if(y<y_min)
y_min=y;
}
cout<<x_min<<' '<<y_min<<' ';
cout<<x_max<<' '<<y_max<<'\n';
}
return 0;
}