apple2365507   6년 전

#include<stdio.h>
#include<math.h>

int main()
{
int x1[10000], y1[10000], r1[10000], x2[10000], y2[10000], r2[10000];
int longr[10000], shortr[10000];
int distance[10000];
double abs_distance[10000];
int T, i;
scanf("%d", &T);

for (i = 0; i<T; i++)
{
scanf("%d %d %d %d %d %d", &x1[i], &y1[i], &r1[i], &x2[i], &y2[i], &r2[i]);
if (r1[i] > r2[i])
{
longr[i] = r1[i];
shortr[i] = r2[i];
}
else if(r1[i]<r2[i])
{
longr[i] = r2[i];
shortr[i] = r1[i];
}
distance[i] = (x1[i] - x2[i])*(x1[i] - x2[i]) + (y1[i] - y2[i])*(y1[i] - y2[i]);
if (distance[i] < 0)
{
distance[i] = -distance[i];
}
abs_distance[i] = sqrt(distance[i]);
}
for (i = 0; i<T; i++)
{
if (abs_distance[i] < r1[i] + r2[i] && abs_distance[i]!=0&& longr[i] < shortr[i] + abs_distance[i])
printf("2\n");
else if (abs_distance[i] == r1[i] + r2[i] || longr[i] == shortr[i] + abs_distance[i])
printf("1\n");
else if (abs_distance[i] > r1[i] + r2[i] || longr[i] > abs_distance[i] + shortr[i] || (x1[i]==x2[i]&&y1[i]==y2[i]&&r1[i]!=r2[i]))
printf("0\n");
else if (x1[i] == x2[i] && y1[i] == y2[i] && r1[i] == r2[i])
printf("-1\n");
}
}

jh05013   6년 전

1
0 0 1 0 0 1

djm03178   6년 전

여러 개의 테스트케이스에 대한 답을 출력해야 하는 문제에서는 답을 모아뒀다가 따로 출력할 필요 없이 답을 구할 때마다 출력해도 됩니다. 애초에 이 문제에서 테스트 케이스의 수가 10000개 이하라는 보장도 없습니다.

댓글을 작성하려면 로그인해야 합니다.