题目链接:
CF 596 A Wilbur and Swimming Pool
题意:
给n个点,问能不能唯一确定一个矩形,可以的话输出矩形面积,否则输出-1。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <climits>
#include <set>
using namespace std;
int main()
{
//freopen("569Ain.txt","r",stdin);
int n,a,b;
while(~scanf("%d",&n)){
set<int> x,y;
for(int i=0;i<n;i++){
scanf("%d%d",&a,&b);
x.insert(a);
y.insert(b);
}
if(x.size()==2&&y.size()==2){
int w=abs((*x.begin())-*(++x.begin()));
int h=abs((*y.begin())-*(++y.begin()));
printf("%d\n",h*w);
}else {
printf("-1\n");
}
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
using namespace std;
int n,x,y,ans;
struct Point{
int x,y;
}point[5];
bool cmp(const struct Point a,const struct Point b)
{
if(a.x==b.x) return a.y<b.y;
else return a.x<b.x;
}
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
scanf("%d%d",&point[i].x,&point[i].y);
ans=-1;
sort(point,point+n,cmp);
if(n==2)
{
if(point[0].x!=point[1].x&&point[0].y!=point[1].y)
ans=(point[1].x-point[0].x)*abs(point[1].y-point[0].y);
}
else if(n==3)
{
if(point[0].x==point[1].x)
{
if(point[2].x!=point[0].x)
{
if(point[2].y==point[0].y) ans=abs(point[2].x-point[1].x)*abs(point[1].y-point[2].y);
else if(point[2].y==point[1].y) ans=abs(point[2].x-point[1].x)*abs(point[2].y-point[0].y);
}
}
else if(point[1].x==point[2].x)
{
if(point[0].y==point[1].y||point[0].y==point[2].y)
ans=abs(point[2].x-point[0].x)*abs(point[2].y-point[1].y);
}
}
else if(n==4)
{
if(point[0].x==point[1].x&&point[1].x!=point[2].x&&point[2].x==point[3].x)
{
if(point[0].y==point[2].y&&point[1].y==point[3].y)
ans=(point[3].x-point[0].x)*(point[3].y-point[0].y);
}
}
printf("%d\n",ans);
}
return 0;
}