총알을 피해라!
시간 제한1초메모리 제한128 MB
움직이는 평면 과녁에 날아오는 총알 최대 10발의 명중 여부를 계산해서 맞은 칸을 별표로 바꿔 출력합니다.
문제
부드로와 티보도가 매트릭스를 보고 나와서, 정말 빠르게 움직이면 총알을 피할 수 있는지를 두고 말다툼 중이다. 산탄총으로 뉴트리아를 잡아 온 부드로는 총알이 퍼지고 나면 전부 피하는 건 불가능하다고 한다. 머릿속으로 아직 쿵후를 하고 있는 티보도는 충분히 빠르기만 하면 다 피한다고 맞선다. 참다 못한 부드로가 실탄으로 직접 확인하겠다고 나서기 전에, 여러 상황을 시뮬레이션해서 이 논쟁을 안전하게 끝내는 프로그램을 작성하자.
입력
입력은 데이터 집합 1개 이상 20개 이하로 이루어지고, 집합 사이에 빈 줄은 없다.
데이터 집합 하나는 다음 다섯 부분이 이 순서대로 이어진다.
START N한 줄. 은 표적을 향해 쏜 총알의 수이고 이다.- 표적의 속도가 적힌 한 줄.
- 총알의 속도가 한 줄에 하나씩 적힌 줄.
- 표적 그림. 1줄 이상 30줄 이하이고 각 줄은 30자 이하다. 공백이 아닌 문자는 총알에 맞을 수 있는 표적의 조각이다. 그림에 숫자, 별표, 쉼표는 나오지 않는다. 그림은 가장 긴 줄의 길이를 너비로, 줄 수를 높이로 하는 직사각형으로 보고, 격자 한 칸은 가로세로 10cm다.
END한 줄.
속도는 공백 없이 <북쪽 성분>,<동쪽 성분>,<위쪽 성분> 세 성분으로 적고 단위는 m/s다. 각 성분은 음수나 소수일 수 있다.
총알은 모두 같은 순간에, 표적 중심에서 정남쪽으로 10m 떨어지고 표적 높이의 절반인 높이에 있는 한 점에서 발사된다. 즉 총구는 표적 중심과 같은 높이에 있다. 발사 이후 표적과 총알은 각자의 속도로 등속 직선 운동을 한다.
그림은 쏘는 사람이 보는 표적의 모습이므로 오른쪽이 동쪽이고 첫 줄 쪽이 위다.
출력
표적은 두께가 없는 평면, 총알은 부피가 없는 점으로 본다. 총알이 표적 평면을 지나는 지점이 공백 아닌 문자가 든 칸 안이면 명중이다. 그림 바깥이나 빈 칸을 지나면 아무 일도 없고, 표적이 총알만큼 빠르게 달아나서 총알이 평면에 끝내 닿지 못해도 아무 일이 없다. 입력에는 칸 경계에 아슬아슬하게 걸치는 총알이 없으므로 소수점 넷째 자리까지만 계산해도 모든 판정이 갈린다.
데이터 집합마다 결과를 하나씩 출력하고, 이어지는 결과 사이는 빈 줄 하나로 구분한다.
명중한 총알이 하나도 없으면 다음을 출력한다.
Got Out Da Way!
명중한 총알이 있으면 표적 그림을 다시 출력하되 맞은 칸을 별표 *로 바꾼다. 각 줄의 길이는 원래대로 둔다.