말뚝 좌표 복원
시간 제한1초메모리 제한128 MB
번호가 붙은 말뚝들을 잇는 삼각형의 변 길이 제곱이 반시계 순서로 주어질 때, 처음 세 말뚝의 좌표를 기준으로 나머지 모든 말뚝의 정수 좌표를 복원한다.
문제
새 수학관을 지을 잔디밭에 말뚝들이 박혀 있고, 이 말뚝들의 좌표를 복원하려고 한다.
측량 결과, 처음 세 말뚝은 직각을 낀 두 변의 길이가 각각 미터이고 빗변의 길이가 미터인 직각삼각형을 이룬다. 이 세 말뚝을 각각 좌표 , , 에 놓는다. 즉 번, 번, 번 말뚝은 각각 , , 에 있다. 나머지 말뚝들도 모두 격자점(좌표가 정수인 점)에 정확히 놓인다.
삼각형 측량 자료가 주어질 때, 모든 말뚝의 좌표를 구하라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 과 이 주어진다. 두 값은 모두 이상 이하이다. 은 뒤따르는 줄의 개수이고, 은 말뚝의 개수이다. 말뚝은 번부터 번까지 번호가 매겨지며, 모든 말뚝의 위치는 서로 다르다. 각 말뚝의 , 좌표는 이상 이하이다.
이어지는 개의 줄에는 각각 여섯 개의 정수 , , , , , 가 주어진다. , , 는 세 말뚝의 번호이며, 항상 반시계 방향 순서로 나열된다. 즉 말뚝 에서 를 거쳐 로 이동하면 에서 왼쪽으로 돈다. 는 말뚝 와 사이 거리의 제곱, 는 말뚝 와 사이 거리의 제곱, 는 말뚝 와 사이 거리의 제곱이다.
모든 말뚝은 입력의 적어도 한 줄에 등장한다. 또한 임의의 두 말뚝 , 에 대해, 입력의 삼각형들 중 일부가 수열 을 이루어, 모든 에 대해 와 이 두 개의 꼭짓점을 공유하고, 가 의 꼭짓점이며 가 의 꼭짓점이 되도록 할 수 있다. 입력의 마지막 줄은 이며, 이 두 값은 , 이 아니므로 처리하지 않는다.
출력
각 테스트 케이스마다 정확히 개의 줄을 출력한다. 이 개의 줄은 번부터 번까지 말뚝의 좌표를 순서대로 나타내며, 각 줄에는 해당 말뚝의 좌표와 좌표를 공백으로 구분해 출력한다. 각 테스트 케이스의 첫 세 줄은 항상 다음과 같다.
0 0
0 1
1 0