풀이
가운데 직사각형 기준으로 왼쪽 반원에 포함될 때 카운트, 가운데 직사각형에 포함될 때 카운트, 오른쪽 반원에 포함될 때 카운트.
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h> int main(void) { int W, H, X, Y, P; int count = 0; scanf("%d %d %d %d %d", &W, &H, &X, &Y, &P); while (P--) { int a, b; scanf("%d %d", &a, &b); if ((a - X)*(a - X) + (b - (Y + H / 2))*(b - (Y + H / 2)) <= (H / 2)*(H / 2) && a < X) count++; else if (X <= a&&a <= X + W&&Y <= b&&b <= Y + H) count++; else if ((a - (X + W))*(a - (W + X)) + (b - (Y + H / 2))*(b - (Y + H / 2)) <= (H / 2)*(H / 2) && X + W < a) count++; } printf("%d", count); return 0; } | cs |
댓글