BOJ : https://www.acmicpc.net/problem/12781

github : https://github.com/junho0956/Algorithm/blob/master/12781/12781/%EC%86%8C%EC%8A%A4.cpp

 

이 문제는 정해진 선인 볼록다각형 위에서 선분의 교차를 판단하는 문제입니다.

삼각형의 면적과 벡터를 이용한 공식을 이용한 CCW 함수를 이용하여 두 선분의 교차를 판별하면 됩니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
 
typedef struct {
    int x, y;
}pii;
 
int ccw(pii a, pii b, pii c) {
    int ans = (b.x - a.x) * (c.y - a.y) - (b.y - a.y)* (c.x - a.x);
    if (ans < 0return 1;
    else if (ans > 0return -1;
    else return 0;
}
 
int main() {
    ios::sync_with_stdio(0), cin.tie(0);
 
    pii a, b, c, d;
    cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y >> d.x >> d.y;
    
    int ans = ccw(a, b, c) * ccw(a, b, d);
    if (ans < 0cout << "1";
    else cout << "0";
 
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

'algorithm > BOJ' 카테고리의 다른 글

BOJ 4888번 문시티 건설  (0) 2020.02.03
BOJ 17387, 17386번 선분 교차  (0) 2020.02.03
BOJ 16991번 외판원 순회3  (0) 2020.02.02
BOJ 2098번 외판원 순회  (0) 2020.02.02
BOJ 10971번 외판원 순회2  (0) 2020.02.02

+ Recent posts