백준 1004번 런타임 에러가 나는데 이유를 모르겠습니다.
//횟수가 증가하는 경우는 출발점과 행성계의 좌표가 같은 경우 혹은 도착점과 행성계의 좌표가 같은 경우, 점과 점 사이의 거리가 행성의 반지름보다 작은 경우
#include <stdio.h>
#include <math.h>
typedef struct _Position {
int cx, cy, r;
}_pos;
int main(void) {
int t;
int x1, y1, x2, y2;
scanf("%d", &t);
for (int i = 0; i < t; i++)
{
int k = 0,u;
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
scanf("%d", &u);
for (int m = 0; m < u; m++) {
_pos pos[40];
scanf("%d %d %d",&pos[m].cx, &pos[m].cy, &pos[m].r);
if (((x1 == pos[m].cx) && (y1 == pos[m].cy)) || ((x2 == pos[m].cx) && (y2 == pos[m].cy)))
// 행성의 중점과 출발점이 같을 경우 혹은 행성의 중점과 도착점이 같을 경우
k++; //횟수 증가
else if ((pos[m].rpos[m].r) > ((pos[m].cx - x1)(pos[m].cx - x1) + (pos[m].cy - y1)*(pos[m].cy - y1)))
// 원 안에 한 점이 있는 케이스 1
k++;
else if ((pos[m].rpos[m].r) > ((pos[m].cx - x2)(pos[m].cx - x2) + (pos[m].cy - y2)*(pos[m].cy - y2)))
// 원 안에 한 점이 있는 케이스 2
k++;
else if (((pos[m].rpos[m].r) > ((pos[m].cx - x1)(pos[m].cx - x1) + (pos[m].cy - y1)*(pos[m].cy - y1)))
&& ((pos[m].rpos[m].r) > ((pos[m].cx - x2)(pos[m].cx - x2) + (pos[m].cy - y2)*(pos[m].cy - y2))))
// 원 안에 두 점이 있는 경우
k=0;
}
printf("%d\n", k);
}
}
출력은 정상적으로 됩니다 ㅠㅠ
문제의 조건을 보면,
첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다.
두 번째 줄에는 행성계의 개수 n이 주어지며,
세 번째 줄부터 n줄에 걸쳐 행성계의 중점과 반지름 (cx, cy, r)이 주어진다.
입력제한은 다음과 같다. (-1000 ≤ x1, y1, x2, y2, cx, cy ≤ 1000, 1 ≤ r ≤ 1000, 1 ≤ n ≤ 50)
작성하신 코드에서 u의 값이 1 ~ 50의 값을 가지는데, pos는 40으로 강제로 할당되어 있어서 pos[m] 접근중 런타임 에러 발생하는 것으로 보입니다.
아래 문제가 되는 코드입니다.
for (int m = 0; m < u; m++) {
_pos pos[40];

