您的位置:首页 > 数据库

Codeforces MemSQL start[c]up Round 1 /325A Square and Rectangles(模拟)

2013-08-17 18:57 453 查看
A. Square and Rectangles

http://codeforces.com/problemset/problem/325/A

time limit per test
1 second

memory limit per test
256 megabytes

input
standard input

output
standard output

You are given n rectangles. The corners of rectangles have integer coordinates and their edges are parallel to the Ox and Oy axes.
The rectangles may touch each other, but they do not overlap (that is, there are no points that belong to the interior of more than one rectangle).

Your task is to determine if the rectangles form a square. In other words, determine if the set of points inside or on the border of at least one rectangle is precisely equal to the set of points inside or on the border of some square.

Input

The first line contains a single integer n (1 ≤ n ≤ 5).
Next n lines contain four integers each, describing a single rectangle: x1, y1, x2, y2 (0 ≤ x1 < x2 ≤ 31400, 0 ≤ y1 < y2 ≤ 31400)
— x1 and x2 are x-coordinates
of the left and right edges of the rectangle, and y1 and y2 are y-coordinates
of the bottom and top edges of the rectangle.

No two rectangles overlap (that is, there are no points that belong to the interior of more than one rectangle).

Output

In a single line print "YES", if the given rectangles form a square, or "NO"
otherwise.

Sample test(s)

input
5
0 0 2 3
0 3 3 5
2 0 5 2
3 2 5 5
2 2 3 3


output
YES


input
4
0 0 2 3
0 3 3 5
2 0 5 2
3 2 5 5


output
NO


学英语:

Your task is to determine if the rectangles form a square.

你的任务是判断所给的这些矩形是否组成了一个正方形。

完整代码:

/*30ms,0KB*/

#include<cstdio>

int main()
{
	int n, x1, y1, x2, y2, s = 0, minx, maxx, miny, maxy;
	scanf("%d", &n);
	scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
	s += (x2 - x1) * (y2 - y1);
	minx = x1, miny = y1, maxx = x2, maxy = y2;
	while (--n)
	{
		scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
		s += (x2 - x1) * (y2 - y1);
		if (x1 < minx)
			minx = x1;
		if (y1 < miny)
			miny = y1;
		if (x2 > maxx)
			maxx = x2;
		if (y2 > maxy)
			maxy = y2;
	}
	printf(maxx - minx == maxy - miny && s == (maxx - minx) * (maxy - miny) ? "YES" : "NO");
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: