알고리즘/BOJ

[백준] 15592 Blocked Billboard II

세진짱 2020. 1. 30. 21:24

 

아주 쉬운 기하문제다

우선 옛날에 틀렸었는데 이유는 무조건 직사각형으로 만들어야하는데 그걸 안지켰다

근데 막상 하려니 혼자 어렵게 생각해서 직선끼리 만나고 그런경우 따지고있었다

 

도움을 좀 받고 보니 내가 전광판을 직사각형 모양이 나오도록 가려야만 효과가 있는걸 알았다

결국 오른쪽 왼쪽 위 아래 이렇게 가릴때만 비교하면 된다!

 

소스코드

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int x1,x2,x3,x4,y1,y2,y3,y4;
 
int main(){
    scanf(" %d %d %d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
    if(y3<=y1 && y2<=y4){
        if(x3<x2 && x2<x4) x2=x3;
        if(x1<x4 && x3<x1) x1=x4;
    }
    if(x3<=x1 && x2<=x4){
        if(y3<y2 && y2<y4) y2=y3;
        if(y1<y4 && y3<y1) y1=y4;
    }
    printf("%d\n",(x2-x1)*(y2-y1));
}