레이더 스코프

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

당신은 새로운 항공 교통 관제 시스템을 만드는 소프트웨어 설계 팀에 합류했습니다. 이 시스템의 기능 중 하나는 감시 대상 항공기의 계기가 제대로 작동하는지 자동으로 검증하고, 위험에 처했거나 방금 이륙했거나 추락했을 가능성이 있는 항공기를 관제사에게 경고하는 것입니다. 여러분은 이 기능의 시제품을 작성해야 합니다.

프로그램은 여러 개의 시나리오를 입력받으며, 각 시나리오는 두 번의 레이더 스윕으로 구성됩니다. 한 번의 스윕은 $0$대에서 $100$대까지의 비행기를 탐지합니다. 스윕이 어떤 비행기를 만날 때마다 데이터 수집 장치는 레이더로부터의 방위각거리(마일 단위)를 측정하고, 비행기로부터 스쿼크 번호대지 속도(마일/시, 바람 보정이 적용된 대기 속도)를 함께 얻습니다. 두 번의 스윕 정보를 바탕으로, 레이더 영역 안의 각 비행기에 대해 경고가 필요한지 판단해야 합니다.

레이더의 탐지 반경은 $10$마일이고, 두 스윕은 정확히 $5$초 간격으로 순간적으로 이루어진다고 가정합니다. 즉 두 스윕 사이의 시간은 $\Delta t = 5/3600$시간입니다.

방위각 $\theta$와 거리 $d$는 평면 좌표로 바꿀 수 있으며(거리 계산에는 상대 위치만 필요합니다), $x = d\sin\theta$, $y = d\cos\theta$ 로 둡니다.

레이더와 비행기 정보를 바탕으로 다음과 같은 경고를 판단합니다.

  • equipment warning(계기 경고): 두 스윕에 모두 나타난 비행기에 대해, 비행기가 보고한 두 대지 속도의 평균 $\bar g = (g_1+g_2)/2$ 가 두 스윕의 위치 변화로 계산한 레이더 측정 속도 $v$(= 두 위치 사이의 거리 $\div,\Delta t$)의 $10%$ 이내에 들어오지 않으면 경고합니다. 즉 $|\bar g - v| > 0.10,v$ 일 때 경고합니다.
  • new intrusion(새 침입) / new aloft(새 이륙): 두 번째 스윕에만 나타난(첫 스윕에는 없던) 비행기를 봅시다. 현재 거리가 $d_2$라면, 이 비행기가 최단 경로로 스코프 안으로 들어오기 위해 이동해야 하는 최소 거리는 $10 - d_2$ 마일입니다. 보고 속도에 $10%$ 여유를 더하면 두 스윕 사이에 최대 $1.10,g_2,\Delta t$ 마일을 이동할 수 있습니다. 이 값이 $10 - d_2$ 이상이면 밖에서 날아 들어온 것으로 보고 new intrusion 경고를, 그렇지 않으면 스코프 안에서 방금 이륙한 것으로 보고 new aloft 경고를 냅니다.
  • domain exited(영역 이탈) / domain loss(영역 소실): 첫 번째 스윕에만 나타난(두 번째 스윕에는 없는) 비행기를 봅시다. 첫 스윕 거리가 $d_1$이라면, 스코프 밖으로 나가기 위한 최소 이동 거리는 $10 - d_1$ 마일입니다. $1.10,g_1,\Delta t \ge 10 - d_1$ 이면 스코프를 벗어난 것으로 보고 domain exited 경고를, 그렇지 않으면 관제 영역 안에서 착륙했거나 추락한 것으로 보고 domain loss 경고를 냅니다.

입력

각 시나리오의 첫 줄에는 첫 번째 스윕에서 탐지된 비행기 수를 나타내는 정수 $N_1$ ($0 \le N_1 \le 100$) 이 주어집니다. 이어지는 $N_1$개의 줄에는 각각 스윕 1에서 탐지된 비행기 하나의 정보가 주어집니다. 각 정보는 스쿼크 번호, 방위각, 거리, 대지 속도 순서로 이루어집니다. 스쿼크 번호는 1자리에서 5자리 사이의 정수이고, 방위각·거리·대지 속도는 모두 XXX.XXX 형식의 실수로, 필요한 만큼 앞뒤에 0을 채워 6자리를 맞춥니다.

  • 스쿼크 번호 ($0 < S < 32767$): 각 비행기를 식별하는 전역적으로 유일한 정수이며, 스윕 1과 스윕 2의 같은 비행기를 짝짓는 데 사용합니다.
  • 방위각 ($000.000 \le A \le 359.999$): 북쪽을 $0$도로 하여 동쪽 방향으로 도는 각도(도 단위)입니다. 따라서 동쪽은 $90$도, 남쪽은 $180$도, 서쪽은 $270$도입니다.
  • 거리 ($000.000 \le D \le 010.000$): 레이더에서 비행기까지의 거리(고도로 인한 추가 거리는 레이더 감지 로직이 이미 제거함)입니다.
  • 대지 속도 ($000.000 \le G \le 999.999$): 비행기가 레이더 기준으로 (어느 방향으로든) 움직이는 속도입니다.

첫 번째 스윕의 비행기 정보 바로 다음 줄에는 두 번째 스윕에서 탐지된 비행기 수 $N_2$ ($0 \le N_2 \le 100$) 가 주어지고, 이어서 $N_2$개의 줄에 스윕 2의 비행기 정보가 같은 형식으로 주어집니다.

다음 시나리오가 있다면 그다음 줄에서 $N_1$부터 다시 시작합니다. 파일의 끝까지 시나리오를 읽어 처리합니다.

출력

각 시나리오마다 먼저 Scenario # X 를 출력합니다. 여기서 $X$는 시나리오 번호로, 첫 시나리오가 $1$이고 이후 $1$씩 증가합니다.

이어서 경고가 필요한 각 비행기에 대해 정확히 한 줄씩 보고를 출력합니다. 보고 줄은 스쿼크 번호 기준 오름차순으로 정렬합니다. 각 줄은 스쿼크 번호를 1~5열에 오른쪽 정렬하여 쓰고, 6열부터 다음 경고 문자열 중 하나를 이어 씁니다(앞의 공백과 대시를 아래 문자열 그대로 출력해야 합니다):

  • " -- equipment warning"
  • " -- new intrusion"
  • " -- new aloft"
  • " -- domain exited"
  • " -- domain loss"

경고가 필요 없는 비행기에 대해서는 아무것도 출력하지 않습니다.

연속한 두 시나리오 사이는 빈 줄 하나로 구분합니다(마지막 시나리오 뒤에는 여분의 빈 줄을 두지 않습니다).