728x90
728x90
https://www.acmicpc.net/problem/1358
난이도: solved.ac 실버 4
알고리즘 분류
기하학
접근 방법
주어진 P개의 좌표와 두 원의 중심 좌표 사이의 거리를 각각 구해서 각 원의 반지름의 길이보다 작거나 같으면 링크에 포함된다고 보았다.
그리고 직사각형 안에 들어도 링크 안에 포함되므로, 위의 두 원 안에 포함되지 않는다면 W * H 크기의 직사각형 영역 안에 포함되는지도 파악해 영역 안에 든다면 링크 안에 포함된다고 보았다.
코드
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int W, H, X, Y, P, R, cnt = 0;
scanf("%d %d %d %d %d", &W, &H, &X, &Y, &P);
R = H / 2;
while (P--) {
int x, y;
scanf("%d %d", &x, &y);
int dist1 = (x - X) * (x - X) + (y - Y - R) * (y - Y - R);
int dist2 = (x - X - W) * (x - X - W) + (y - Y - R) * (y - Y - R);
if (dist1 <= R * R || dist2 <= R * R)
cnt++;
else if (x >= X && x <= X + W && y >= Y && y <= Y + H)
cnt++;
}
printf("%d", cnt);
return 0;
}
반응형