hiho1040 矩形判断

题目:

#1040 : 矩形判断

时间限制: 1000ms
单点时限: 1000ms
内存限制: 256MB

描述

给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形。

输入

输入第一行是一个整数T(1<=T<=100),代表测试数据的数量。

每组数据包含4行,每行包含4个整数x1, y1, x2, y2 (0 <= x1, y1, x2, y2 <= 100000);其中(x1, y1), (x2,y2)代表一条线段的两个端点。

输出

每组数据输出一行YES或者NO,表示输入的4条线段是否恰好围成矩形。

样例输入
3
0 0 0 1
1 0 1 1
0 1 1 1
1 0 0 0
0 1 2 3
1 0 3 2
3 2 2 3
1 0 0 1
0 1 1 0
1 0 2 0
2 0 1 1
1 1 0 1
样例输出
YES
YES
NO
题解:用二维数组一条线段一条线段的输入,然后将这些点存在set集合中,定义set> se;首先形成矩形肯定只有四个点,先判断集合中不重复的元素是否刚好为四个,然后用其边的斜率判断,斜率只有两个(两两相同,就是平行),再判断不相同的斜率是否垂直即可。
代码:
 
    
#include
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
using namespace std;
int main()
{
	int t,i,j;
	cin>>t;
	while(t--)
	{
		set > se;
		int a[4][4];
		for(i=0;i<4;i++)
		{
			cin>>a[i][0]>>a[i][1]>>a[i][2]>>a[i][3];
			se.insert(make_pair(a[i][0],a[i][1]));
			se.insert(make_pair(a[i][2],a[i][3]));	
		 }
		 //cout<


你可能感兴趣的:(hiho,Coder)