[필자사고]
고등학교 때 배운 신발끈 공식을 적용하면 쉽게 풀 수 있는 문제이다
x1 x2 x3 x1
y1 y2 y3 y1
(x1*y2+x2*y3+x3*y1)-(x2*y1+x3*y2+x1*y3)= ccw
문제에서 다각형의 넓이를 구해야 되므로 x3,y3을 원점이라 하고
각 선분마다 ccw값을 구하고 결과값에 더해준다.
마지막으로 절대값을 취해주고 2로 나눠주면 답이 나온다.
#include<iostream>
#include <vector>
#include<cmath>
#include <algorithm>
using namespace std;
int N;
long x[10001];
long y[10001];
//x1 x2 0 x1
//y1 y2 0 y1
//x1*y2 -x2*y1;
void Input() {
cin >> N;
for (int i = 0; i < N; i++) {
cin >> x[i];
cin >> y[i];
}
x[N] = x[0];
y[N] = y[0];
double result = 0;
for (int i = 0; i < N; i++) {
result += (x[i] * y[i + 1]) - (x[i + 1] *y[i]);
}
cout << fixed;
cout.precision(1);
cout << abs(result) / 2;
}
int main(void) {
Input();
}
'백준 > 기하' 카테고리의 다른 글
백준 2162 c++ - [PlusUltraCode] (0) | 2024.02.19 |
---|---|
백준 17387 c++ -선분 교차2 [PlusUltraCode] (0) | 2024.02.16 |
백준 11758 c++ -PlusUltraCode (0) | 2024.02.15 |
기하 개념정리 (0) | 2024.02.15 |