문제 설명
평면에 \(N\)개의 점 \(P_1(x_1, y_1), P_2(x_2, y_2), . . . , P_N (x_N , y_N )\)이 주어지며, 각각의 점들은 총 \(K\)개의 색깔 중
하나를 가지고 있다. 각 점의 색깔은 \({1, 2, . . . , K}\) 중의 한 정수로 표현된다.
어떤 정사각형이 각 \(K\)개의 색깔에 대해 해당 색깔의 점을 하나 이상 포함하고 있다면, 이 정사각형을 화 려한 정사각형이라고 부른다. 변의 길이를 최소로 하는 화려한 정사각형을 찾아서 그 변의 길이를 출력하는 프로그램을 작성하라.
단, 여기서 정사각형은 네 변이 모두 수평 혹은 수직인 것에 한정하며, 정사각형의 내부가 아닌 경계에 놓인 점들도 그 정사각형에 포함된다고 생각한다. 정사각형의 한 변의 길이가 0이 되어 점으로 나타나는 경우도 정사각형의 한 경우로 간주한다.
어떤 정사각형이 각 \(K\)개의 색깔에 대해 해당 색깔의 점을 하나 이상 포함하고 있다면, 이 정사각형을 화 려한 정사각형이라고 부른다. 변의 길이를 최소로 하는 화려한 정사각형을 찾아서 그 변의 길이를 출력하는 프로그램을 작성하라.
단, 여기서 정사각형은 네 변이 모두 수평 혹은 수직인 것에 한정하며, 정사각형의 내부가 아닌 경계에 놓인 점들도 그 정사각형에 포함된다고 생각한다. 정사각형의 한 변의 길이가 0이 되어 점으로 나타나는 경우도 정사각형의 한 경우로 간주한다.
입력 설명
첫 번째 줄에 두 정수 \(N\)과 \(K\)가 공백 하나를 사이로 두고 주어진다.
이후 \(N\) 개의 줄이 주어진다. 이 중 \(i\) 번째 줄에는 세 개의 정수 \(x_i
, y_i
, k_i\)가 공백 하나 씩을 사이에 두고
주어지며, 입력으로 주어지는 각 점의 좌표 \((x_i
, y_i)\)와 그 점의 색깔 \(k_i\)을 의미한다
- \(2 \le N \le 100 000\)
- \(2 \le K \le N\)
- 모든 \(i (1 \le i \le N)\)에 대해, \(x_i\)와 \(y_i\)는 1 이상 250 000 이하의 정수이다.
- 모든 색 \(1 \le k \le K\)에 대해, \(N\)개의 점들 중 색깔이 \(k\)인 점이 최소 하나 존재한다.
- (3점) \(N \le 50\), 모든 \(i (1 \le i \le N)\)에 대해 \(xi, yi \le 50\)
- (10점) \(K \le 50\), 모든 \(i (1 \le i \le N)\)에 대해 \(xi, yi \le 2 500\)
- (12점) \(K = 2.\)
- (5점) \(N \le 50.\)
- (8점) \(N \le 150.\)
- (9점) \(N \le 600.\)
- (13점) \(N \le 2 500.\)
- (40점) 추가 제약 조건 없음.
출력 설명
첫 번째 줄에 문제의 정답을 출력한다.
입력 예시 Copy
5 2
4 2 1
5 3 1
5 4 2
4 5 2
3 8 2
출력 예시 Copy
1