Mafa Dev
[dovelet] rlpn 본문
2차원 격자공간에 두 개의 꼭짓점 좌표로 표현되는 직사각형이 있다. 직사각형은 아래와 같이 왼쪽 아래 꼭짓점 좌표 (x,y) 와 오른쪽 위 꼭짓점 좌표 (p,q) 로 주어진다.
이 문제에서 모든 직사각형은 두 꼭짓점의 좌표를 나타내는 4개의 정수 x,y,p,q 로 표현된다. 단 항상 x < p , y < q 이다.
예를 들어 위 그림에 제시된 직사각형이라면 아래와 같이 표현된다.
3 2 9 8
두 개의 직사각형은 그 겹치는 부분의 특성에 따라 다음 4가지 경우로 분류될 수 있다.
- 먼저 두 직사각형의 겹치는 부분이 직사각형인 경우이다. 아래 그림(a)는 공통부분이 직사각형인 경우의 3가지 예를 보여준다,
- 또는 겹치는 부분이 아래 그림 (b)와 같이 선분이 될 수도 있고, 그림 (c)와 같이 점도 될 수 있다.
- 마지막으로 아래 그림 (d)와 같이 공통부분 없이 두 직사각형이 완전히 분리된 경우도 있다.
여러분은 두 직사각형의 겹치는 부분이 직사각형인지, 선분인지, 점인지, 아니면 전혀 없는 지를 판별해서 해당되는 코드 문자를 출력해야 한다.
공통 부분의 특징 | 출력 |
---|---|
직사각형 | rectangle |
선분 | line |
점 | point |
공통부분이 없음 | none |
입력
8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사각형의 좌표 값은 1이상 50,000 이하의 정수로 제한된다.출력
해당 단어를 출력해야 한다.입출력 예
입력 3 10 50 60 100 100 200 300 출력 none 입력 45 50 600 600 400 450 500 543 출력 rectangle 입력 11 120 120 230 50 40 60 440 출력 rectangle 입력 35 56 67 90 67 80 500 600 출력 line
소스 입니다.
#include<stdio.h>
int
main()
{
int
x1,y1,x2,y2;
int
x3,y3,x4,y4;
scanf
(
"%d %d %d %d %d %d %d %d"
,&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
if
(x2<x3 || x4 <x1 || y2 < y3 || y4<y1)
printf
(
"none"
);
else
if
(y2==y3 && x1<x3&& x3<x2 || y2==y3 && x1<x4 && x4<x2 || y1==y4 && x1<x3 && x3<x2 || y1==y4 && x1<x4 && x4<x2 ||
y4==y1 && x3 <x1 && x2<x4 || x4==x1 && y3<y1 && y2<y4 || y2==y3 && x3<x1 && x2<x4 || x3==x2 && y3<y1&&y2<y4 ||
x1==x4 && y4>y1 && y2>y4 || x2==x3&&y1>y3&&y4>y1 || x1==x4&& y2>y3&&y4>y2|| x2==x3&& y3>y1&& y2>y3 ||
x1==x4 && y1==y3 &&y4==y2 || x3==x1 && y4==y1 && x4==x2 || x3==x2&&y3==y1&&y2==y4 || x1==x3&&y2==y3&&x2==x4)
printf
(
"line"
);
else
if
(x2==x3&&y2==y3 ||x3==x2 && y4==y1 || x1==x4 && y2==y3 ||x1==x4 && y1==y4)
printf
(
"point"
);
else
printf
(
"rectangle"
);
return
0;
}
'algorithm > 문제' 카테고리의 다른 글
[dovelet] profit (0) | 2013.03.10 |
---|---|
[dovelet] complete_graph (0) | 2013.03.06 |
[dovelet] fuse (0) | 2013.03.06 |
[dovelet] coci_spa (0) | 2013.03.05 |
[UVA] 10041번 문제 (0) | 2013.02.26 |