728x90
728x90

https://www.acmicpc.net/problem/1358
1358번: 하키
첫째 줄에 수 W H X Y P가 주어진다. P는 선수의 수이다. W와 H는 100보다 작거나 같은 자연수이고, H는 짝수이다. X와 Y는 절댓값이 100보다 작거나 같은 정수이다. P는 최대 50인 자연수이다. 둘째 줄부
www.acmicpc.net




난이도: 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; }
반응형