본문 바로가기
백준/기하

백준 2166 c++ -[PlusUltraCode]

by PlusUltraCode 2024. 2. 19.

[필자사고] 

고등학교 때 배운 신발끈 공식을 적용하면 쉽게 풀 수 있는 문제이다

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