

저 반원 + 직사각형 + 반원 을 따로따로 생각해주었다
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 |
댓글