문제

링크

풀이

#include <stdio.h>
#include <math.h>
 
typedef struct Coord {
  int x;
  int y;
} Coord;
 
typedef struct Circle {
  Coord c;
  int r;
} Circle;
 
double distance(Coord a, Coord b) {
  return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
 
void solve(void) {
  int n, cnt = 0;
  Coord s, e;
  Circle p[50];
 
  scanf("%d %d %d %d", &s.x, &s.y, &e.x, &e.y);
  scanf("%d", &n);
  for (int i=0; i<n; i++) {
    scanf("%d %d %d", &p[i].c.x, &p[i].c.y, &p[i].r);
    if (distance(s, p[i].c) < p[i].r && distance(e, p[i].c) > p[i].r) cnt++;
    if (distance(s, p[i].c) > p[i].r && distance(e, p[i].c) < p[i].r) cnt++;
  }
  printf("%d\n", cnt);
}
 
int main(void) {
  int t;
 
  scanf("%d", &t);
  while (t--) {
    solve();
  }
  return 0;
}