<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4%2F%EB%AC%B8%EC%A0%9CA</id>
	<title>2002년도ACM문제샘플풀이/문제A - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4%2F%EB%AC%B8%EC%A0%9CA"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;action=history"/>
	<updated>2026-05-15T06:54:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;diff=83948&amp;oldid=prev</id>
		<title>Maintenance script: Repair redlink pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;diff=83948&amp;oldid=prev"/>
		<updated>2026-03-26T15:01:58Z</updated>

		<summary type="html">&lt;p&gt;Repair redlink pages from live compare&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:01, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l327&quot;&gt;Line 327:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 327:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // 그리구 jdValue 이거는 절대값 구하는 함수 같은데&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // 그리구 jdValue 이거는 절대값 구하는 함수 같은데&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // 저것도 #include &amp;amp;lt;cmath&amp;amp;gt; 한다음, abs(값) 하면 끝남&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // 저것도 #include &amp;amp;lt;cmath&amp;amp;gt; 한다음, abs(값) 하면 끝남&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 상민(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;neocoin&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;) ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 상민(neocoin) ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;하고 보니 영역 체크가 없군요. ;; 뭐, 예제만 통과할려고 했네요. 앗차 위의 소스들을 보니 max, min이 있었지요. 다음에는 까먹지 말아야지..&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;하고 보니 영역 체크가 없군요. ;; 뭐, 예제만 통과할려고 했네요. 앗차 위의 소스들을 보니 max, min이 있었지요. 다음에는 까먹지 말아야지..&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;amp;lt;iostream&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;amp;lt;iostream&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;diff=83889&amp;oldid=prev</id>
		<title>Maintenance script: Repair pages found by live-compare batch 0001</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;diff=83889&amp;oldid=prev"/>
		<updated>2026-03-26T14:46:16Z</updated>

		<summary type="html">&lt;p&gt;Repair pages found by live-compare batch 0001&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;amp;diff=83889&amp;amp;oldid=26143&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;diff=26143&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CA&amp;diff=26143&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= 상규, 재동 =&lt;br /&gt;
* 첫번째 풀때가 1시간쯤 걸렸고 2번째 풀때는 35분쯤 걸렸습니다. 두번째 풀때는 전보다 좋은 알고리즘이 떠올랐습니다.&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 struct POINT&lt;br /&gt;
 {&lt;br /&gt;
 	int x, y;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int numOfData;&lt;br /&gt;
 POINT inputData[10][4];&lt;br /&gt;
 int outputData[10];&lt;br /&gt;
 &lt;br /&gt;
 #define max(a,b) (a &amp;amp;gt; b) ? a : b&lt;br /&gt;
 #define min(a,b) (a &amp;amp;lt; b) ? a : b&lt;br /&gt;
 &lt;br /&gt;
 void input()&lt;br /&gt;
 {&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; numOfData;&lt;br /&gt;
 	for(int i=0;i&amp;amp;lt;numOfData;i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		for(int j=0;j&amp;amp;lt;4;j++)&lt;br /&gt;
 		{&lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; inputData[i][j].x;&lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; inputData[i][j].y;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void process()&lt;br /&gt;
 {&lt;br /&gt;
 	POINT maxPoint, minPoint;&lt;br /&gt;
 	int overlappedRect;&lt;br /&gt;
 	for(int i=0;i&amp;amp;lt;numOfData;i++) {&lt;br /&gt;
 		maxPoint.x = max(inputData[i][0].x,inputData[i][2].x);&lt;br /&gt;
 		maxPoint.y = max(inputData[i][0].y,inputData[i][2].y);&lt;br /&gt;
 &lt;br /&gt;
 		minPoint.x = min(inputData[i][1].x,inputData[i][3].x);&lt;br /&gt;
 		minPoint.y = min(inputData[i][1].y,inputData[i][3].y);&lt;br /&gt;
 &lt;br /&gt;
 		overlappedRect = (minPoint.x - maxPoint.x) * (minPoint.y - maxPoint.y);&lt;br /&gt;
 		if(overlappedRect &amp;amp;lt; 0) overlappedRect = 0;&lt;br /&gt;
 		&lt;br /&gt;
 		outputData[i] = (inputData[i][1].x - inputData[i][0].x) * (inputData[i][1].y - inputData[i][0].y);&lt;br /&gt;
 &lt;br /&gt;
 		outputData[i] -= overlappedRect;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void output()&lt;br /&gt;
 {&lt;br /&gt;
 	for(int i=0;i&amp;amp;lt;numOfData;i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; outputData[i] &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	input();&lt;br /&gt;
 	process();&lt;br /&gt;
 	output();&lt;br /&gt;
 }&lt;br /&gt;
= 인수 =&lt;br /&gt;
* 한 두시간은 걸린거 같다--; 문제를 제대로 읽어보지 않은 탓이다. 무슨 찌그러진 사각형을 생각하다니--; 미친거 아닌가 모르겠다.&lt;br /&gt;
* 이건 시간 생각안하고, 열심히 디자인 해볼라고 노력했는데.. 아무래도 경시대회에선 별루 좋은 방법 같진 않다. 속도 높이는데 중점을 둬야겠다.&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cmath&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;vector&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 struct Point&lt;br /&gt;
 {&lt;br /&gt;
 	int x;&lt;br /&gt;
 	int y;&lt;br /&gt;
 	Point(int arg_x, int arg_y)&lt;br /&gt;
 	{&lt;br /&gt;
 		x = arg_x;&lt;br /&gt;
 		y = arg_y;&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Line&lt;br /&gt;
 {&lt;br /&gt;
 public :&lt;br /&gt;
 	int x1;&lt;br /&gt;
 	int y1;&lt;br /&gt;
 	int x2;&lt;br /&gt;
 	int y2;&lt;br /&gt;
 &lt;br /&gt;
 	bool IsVertical()&lt;br /&gt;
 	{&lt;br /&gt;
 		return x1 == x2;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsHorizontal()&lt;br /&gt;
 	{&lt;br /&gt;
 		return y1 == y2;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsSameVerticalLine(Line&amp;amp;amp; line)&lt;br /&gt;
 	{&lt;br /&gt;
 		return line.x1 == x1;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsSameHorizontalLine(Line&amp;amp;amp; line)&lt;br /&gt;
 	{&lt;br /&gt;
 		return line.y1 == y1;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	Line() {}&lt;br /&gt;
 &lt;br /&gt;
 	Line(int arg_x1, int arg_y1, int arg_x2, int arg_y2) &lt;br /&gt;
 		: x1(arg_x1), y1(arg_y1), x2(arg_x2), y2(arg_y2) {}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsHorizontalCrossVertical(Line&amp;amp;amp; line)&lt;br /&gt;
 	{&lt;br /&gt;
 		return line.y1 &amp;amp;gt;= y1 &amp;amp;amp;&amp;amp;amp; line.y1 &amp;amp;lt;= y2 &amp;amp;amp;&amp;amp;amp; x1 &amp;amp;gt;= line.x1 &amp;amp;amp;&amp;amp;amp; x1 &amp;amp;lt;= line.x2;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	bool IsVerticalCrossHorizontal(Line&amp;amp;amp; line)&lt;br /&gt;
 	{&lt;br /&gt;
 		return line.x1 &amp;amp;gt;= x1 &amp;amp;amp;&amp;amp;amp; line.x1 &amp;amp;lt;= x2 &amp;amp;amp;&amp;amp;amp; y1 &amp;amp;gt;= line.y1 &amp;amp;amp;&amp;amp;amp; y1 &amp;amp;lt;= line.y2;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsMeet(Line&amp;amp;amp; line)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(IsVertical())&lt;br /&gt;
 		{&lt;br /&gt;
 			if( IsSameVerticalLine(line) || IsHorizontalCrossVertical(line) )&lt;br /&gt;
 				return true;&lt;br /&gt;
 			return false;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			if( IsSameHorizontalLine(line) || IsVerticalCrossHorizontal(line) )&lt;br /&gt;
 				return true;&lt;br /&gt;
 			return false;&lt;br /&gt;
 		}&lt;br /&gt;
 		return false;&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Rect&lt;br /&gt;
 {&lt;br /&gt;
 public :&lt;br /&gt;
 	int x1;&lt;br /&gt;
 	int y1;&lt;br /&gt;
 	int x2;&lt;br /&gt;
 	int y2;&lt;br /&gt;
 	vector&amp;amp;lt;Point&amp;amp;gt; intersections;&lt;br /&gt;
 &lt;br /&gt;
 	Line GenerateLine(int nth)&lt;br /&gt;
 	{&lt;br /&gt;
 		switch(nth)&lt;br /&gt;
 		{&lt;br /&gt;
 		case 0:&lt;br /&gt;
 			return Line(x1, y1, x2, y1);&lt;br /&gt;
 		case 1:&lt;br /&gt;
 			return Line(x2, y1, x2, y2);&lt;br /&gt;
 		case 2:&lt;br /&gt;
 			return Line(x1, y2, x2, y2);&lt;br /&gt;
 		case 3:&lt;br /&gt;
 			return Line(x1, y1, x1, y2);&lt;br /&gt;
 		default:&lt;br /&gt;
 			return Line(x1, y1, x1, y1);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsHeapUp()&lt;br /&gt;
 	{&lt;br /&gt;
 		return intersections.size() == 2;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	bool IsSmallerThan(Rect&amp;amp;amp; rect)&lt;br /&gt;
 	{&lt;br /&gt;
 		return rect.x2 &amp;amp;gt;= x2;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void AddIntersectionPoint(Line&amp;amp;amp; rect1Line, Line&amp;amp;amp; rect2Line)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(rect1Line.IsVertical())		&lt;br /&gt;
 			intersections.push_back( Point(rect1Line.x1, rect2Line.y1) );&lt;br /&gt;
 		else&lt;br /&gt;
 			intersections.push_back( Point(rect2Line.x1, rect1Line.y1) );&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	Rect(int arg_x1, int arg_y1, int arg_x2, int arg_y2) &lt;br /&gt;
 		: x1(arg_x1), y1(arg_y1), x2(arg_x2), y2(arg_y2) {}&lt;br /&gt;
 &lt;br /&gt;
 	void CountIntersectionPoint(Rect&amp;amp;amp; rect)&lt;br /&gt;
 	{&lt;br /&gt;
 		Line rect1Line, rect2Line;&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; 4 ; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			rect1Line = GenerateLine(i);&lt;br /&gt;
 			for(int j = 0 ; j &amp;amp;lt; 4 ; ++j)&lt;br /&gt;
 			{&lt;br /&gt;
 				rect2Line = rect.GenerateLine(j);&lt;br /&gt;
 				if( rect1Line.IsMeet(rect2Line) )&lt;br /&gt;
 				{&lt;br /&gt;
 					AddIntersectionPoint(rect1Line, rect2Line);					&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int GetRestSquare(Rect&amp;amp;amp; rect)&lt;br /&gt;
 	{&lt;br /&gt;
 		int intersectionSquare = 0;&lt;br /&gt;
 		if( IsHeapUp() )	&lt;br /&gt;
 		{&lt;br /&gt;
 			intersectionSquare = abs(intersections[1].x - intersections[0].x)&lt;br /&gt;
 									* abs(intersections[1].y - intersections[0].y);&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			if( IsSmallerThan(rect) )&lt;br /&gt;
 				intersectionSquare = (x2-x1) * (y2-y1);&lt;br /&gt;
 			else &lt;br /&gt;
 				intersectionSquare = (rect.x2-rect.x1) * (rect.y2-rect.y1);&lt;br /&gt;
 		}&lt;br /&gt;
 		return (x2-x1) * (y2-y1) - intersectionSquare;&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	Rect rect1(2,2,4,4);&lt;br /&gt;
 	Rect rect2(1,1,5,5);&lt;br /&gt;
 	rect1.CountIntersectionPoint(rect2);&lt;br /&gt;
 &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; rect1.GetRestSquare(rect2);	&lt;br /&gt;
 	&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 창섭 =&lt;br /&gt;
* 으흐.. 마지막에 이렇게 기가 막힌 알고리즘을 왜 생각지 못했을까 하며 통탄했었다. 아직 A 만 풀었지만.. C++ 이라고는 하지만 사실항 C 인거 같다.쩝.. 아무튼 내가 짜고도 알고리즘의 간단함에 놀라움을 금치 못했다. 다만 엄청난 삽질을 하고서 생각났다는게 어안이 벙벙할 뿐이다. 다른거 생각하기 귀찮아서 전부 전역변수로 넣어버린 것도 부끄럽다.&lt;br /&gt;
* STL 을 공부해둘 걸 하는 후회가 있다. 배열을 쓸 때마다 느끼는 바다...쩝.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 void input();&lt;br /&gt;
 int board1Size();&lt;br /&gt;
 int calDiffSize();&lt;br /&gt;
 void output();&lt;br /&gt;
 int jdValue(int a, int b);&lt;br /&gt;
 void sort(int a[], int size);&lt;br /&gt;
 int num;&lt;br /&gt;
 int board1[10];&lt;br /&gt;
 int diffSize[10];&lt;br /&gt;
 int x1, x2, x3, x4, y1, y2, y3, y4;&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	input();&lt;br /&gt;
 	board1Size();&lt;br /&gt;
 	output();&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void input()&lt;br /&gt;
 {&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; num;&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; num; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; x1 &amp;amp;gt;&amp;amp;gt; y1 &amp;amp;gt;&amp;amp;gt; x2 &amp;amp;gt;&amp;amp;gt; y2 &amp;amp;gt;&amp;amp;gt; x3 &amp;amp;gt;&amp;amp;gt; y3 &amp;amp;gt;&amp;amp;gt; x4 &amp;amp;gt;&amp;amp;gt; y4;&lt;br /&gt;
 		diffSize[i] = calDiffSize();&lt;br /&gt;
 		board1[i] = board1Size();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int board1Size()&lt;br /&gt;
 {&lt;br /&gt;
 	return (x2 - x1)*(y2 - y1);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int calDiffSize()&lt;br /&gt;
 {&lt;br /&gt;
 	int diffSize;&lt;br /&gt;
 	if (x2 &amp;amp;lt;= x3 || x1 &amp;amp;gt;= x4 || y1 &amp;amp;gt;= y4 || y2 &amp;amp;lt;= y3)&lt;br /&gt;
 		return 0;&lt;br /&gt;
 	int x[4] = {x1, x2, x3, x4};&lt;br /&gt;
 	int y[4] = {y1, y2, y3, y4};&lt;br /&gt;
 	sort(x, 4);&lt;br /&gt;
 	sort(y, 4);&lt;br /&gt;
 	diffSize = jdValue(x[1], x[2]) * jdValue(y[1], y[2]);&lt;br /&gt;
 	return diffSize;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void output()&lt;br /&gt;
 {&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; num; i++)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; board1[i] - diffSize[i] &amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int jdValue(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
 	if (a &amp;amp;gt; b)&lt;br /&gt;
 		return b - a;&lt;br /&gt;
 	return a - b;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void sort(int a[], int size)&lt;br /&gt;
 {&lt;br /&gt;
 	for (int k = 0; k &amp;amp;lt; size; k++)&lt;br /&gt;
 	{&lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; size - 1; i++)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (a[i] &amp;amp;gt; a[i+1])&lt;br /&gt;
 			{&lt;br /&gt;
 				int temp;&lt;br /&gt;
 				temp = a[i];&lt;br /&gt;
 				a[i] = a[i+1];&lt;br /&gt;
 				a[i+1] = temp;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 // sort 함수는 #include &amp;amp;lt;algorithm&amp;amp;gt; 한다음&lt;br /&gt;
 // sort(&amp;amp;amp;a[0], &amp;amp;amp;a[size]); 하면 끝남&lt;br /&gt;
 // 그리구 jdValue 이거는 절대값 구하는 함수 같은데&lt;br /&gt;
 // 저것도 #include &amp;amp;lt;cmath&amp;amp;gt; 한다음, abs(값) 하면 끝남&lt;br /&gt;
== 상민([[neocoin]]) ==&lt;br /&gt;
하고 보니 영역 체크가 없군요. ;; 뭐, 예제만 통과할려고 했네요. 앗차 위의 소스들을 보니 max, min이 있었지요. 다음에는 까먹지 말아야지..&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;vector&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 struct DataSet{&lt;br /&gt;
 	int underX[2];&lt;br /&gt;
 	int underY[2];&lt;br /&gt;
 	int upperX[2];&lt;br /&gt;
 	int upperY[2];&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 vector&amp;amp;lt; DataSet &amp;amp;gt; datas;&lt;br /&gt;
 &lt;br /&gt;
 void input(){&lt;br /&gt;
 	int numberOfTestCase =0;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; numberOfTestCase;&lt;br /&gt;
 &lt;br /&gt;
 	for ( int testCaseNum=0;testCaseNum&amp;amp;lt;numberOfTestCase;testCaseNum++){&lt;br /&gt;
 		DataSet data;&lt;br /&gt;
 		for ( int i =0;i&amp;amp;lt;2;i++)&lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; data.underX[i] &amp;amp;gt;&amp;amp;gt; data.underY[i];			&lt;br /&gt;
 		&lt;br /&gt;
 		for ( i =0;i&amp;amp;lt;2;i++)&lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; data.upperX[i] &amp;amp;gt;&amp;amp;gt; data.upperY[i];&lt;br /&gt;
 		&lt;br /&gt;
 		datas.push_back(data);		&lt;br /&gt;
 	}	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int getVisibleArea(DataSet&amp;amp;amp; data){	&lt;br /&gt;
 	int underArea = ( data.underX[1] - data.underX[0] ) * (data.underY[1]-data.underY[0]);&lt;br /&gt;
 	int x[2];&lt;br /&gt;
 	int y[2];&lt;br /&gt;
 	&lt;br /&gt;
 	x[0] = ( data.underX[0] &amp;amp;gt; data.upperX[0] )?data.underX[0]:data.upperX[0];&lt;br /&gt;
 	x[1] = ( data.underX[1] &amp;amp;lt; data.upperX[1] )?data.underX[1]:data.upperX[1];&lt;br /&gt;
 	y[0] = ( data.underY[0] &amp;amp;gt; data.upperY[0] )?data.underY[0]:data.upperY[0];&lt;br /&gt;
 	y[1] = ( data.underY[1] &amp;amp;lt; data.upperY[1] )?data.underY[1]:data.upperY[1];&lt;br /&gt;
 &lt;br /&gt;
 	int overArea = (x[1] - x[0])*(y[1]-y[0]);&lt;br /&gt;
 	return underArea - overArea;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 void process(){		&lt;br /&gt;
 	vector&amp;amp;lt;DataSet&amp;amp;gt;::iterator iter;&lt;br /&gt;
 	for ( iter = datas.begin(); iter != datas.end(); iter++)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; getVisibleArea(*iter) &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 }&lt;br /&gt;
 int main(){&lt;br /&gt;
 	input();&lt;br /&gt;
 	process();	&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
see also:&lt;br /&gt;
* Seminar:PosterAreaByEungJu&lt;br /&gt;
* Seminar:PosterAreaByJune&lt;br /&gt;
* Seminar:PosterAreaBy1002&lt;br /&gt;
----&lt;br /&gt;
[[2002년도ACM문제샘플풀이]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>