맥주 시력
시간 제한2초메모리 제한512 MB
주어진 점 집합을 어떤 집합을 (X, Y)만큼 평행이동한 집합과 합집합했을 때 원래 집합이 되는, 영벡터가 아닌 이동 벡터의 개수를 센다.
문제
늦은 저녁, 문을 닫은 술집 근처 잔디밭에 누워 있는 취객이 본 별들의 (취한) 이미지가 주어진다. 이 이미지는 원본(맨정신의) 이미지와, 그 이미지를 어떤 고정된 (X, Y) 영 벡터가 아닌 벡터만큼 평행이동한 복사본을 섞은 것이다. 취객이 인식하는 것은 이렇게 섞인 이미지뿐이다. 안타깝게도 원본 이미지도, 평행이동 벡터도 그에게도 우리에게도 주어지지 않는다.
인간적인 배려라면 그가 인식한 이미지를 맨정신의 동료 시민들이 보는 버전으로 되돌리는 일일 것이다.
이미지가 주어졌을 때, 어떤 원본 이미지와 그것을 벡터만큼 평행이동한 복사본을 합쳐 취한 이미지를 만들 수 있는 서로 다른 (X, Y) 벡터의 개수를 구하는 프로그램을 작성하시오.
원본 이미지의 별과 평행이동한 복사본의 별, 이렇게 서로 다른 두 별의 이미지가 섞인 이미지에서 겹치면, 프로그램의 입력이기도 한 취한 이미지에는 그 위치에 대한 항목이 하나만 들어간다.
입력
첫째 줄에는 섞인 (취한) 이미지에 있는 별의 개수 N (0 < N ≤ 1000)이 주어진다. 다음 N개의 줄에는 별의 위치를 나타내는 두 정수 Xi, Yi가 공백으로 구분되어 주어진다 (−1000 ≤ Xi, Yi ≤ 1000). 모든 별은 크기가 없는 점으로 본다.
출력
길이가 0이 아닌 벡터 중, 알려지지 않은 맨정신의 그림에 적용해 입력으로 주어진 취한 이미지를 만들 수 있는 서로 다른 벡터의 개수를 출력한다. 그 알려지지 않은 이미지는 경우에 따라 다를 수 있다.