본문 바로가기
백준

[1358] 하키

by kmyobin 2022. 8. 12.

 

저 반원 + 직사각형 + 반원 을 따로따로 생각해주었다

1. 왼쪽 반원에 포함되어있는 경우

2. 가운데 직사각형에 포함되어있는 경우

3. 오른쪽 반원에 포함되어있는 경우

를 따져주었다

 

전체 코드는 아래와 같다

#include <iostream>
#include <cmath>
using namespace std;

double W, H, X, Y, P;
int cnt;

int main() {
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base::sync_with_stdio(false);

	cin >> W >> H >> X >> Y >> P;

	for (int i = 0; i < P; i++)
	{
		double x, y;
		cin >> x >> y;

		// 1. 왼쪽 반원
		if (sqrt(pow(X - x, 2) + pow(Y + H / 2 - y, 2)) <= H / 2) {
			cnt++;
		}
		// 2. 가운데 직사각형
		else if ((X <= x && x <= X + W) && (Y <= y && y <= Y + H)) {
			cnt++;
		}
		// 3. 오른쪽 반원
		else if (sqrt(pow(X + W - x, 2) + pow(Y + H / 2 - y, 2)) <= H / 2) {
			cnt++;
		}
	}
	printf("%d", cnt);
}

 

'백준' 카테고리의 다른 글

[2981] 검문  (0) 2022.08.19
[1934] 최소공배수  (0) 2022.08.19
[1004] 어린 왕자  (0) 2022.08.12
[2477] 참외밭  (0) 2022.08.12
[11478] 서로 다른 부분 문자열의 개수  (0) 2022.07.30

댓글