화살표 그리기

면접 대비

시간 제한1초메모리 제한256 MB

요약
각 점에서 같은 색의 가장 가까운 점으로 화살을 쏠 때 모든 화살 길이의 합을 구한다.
난이도

보통10점 중 4점

유형
정렬, 해시맵, 배열, 구현
정답자
아직 제출이 없습니다

문제

직선 위에 NN개의 점이 주어지고, 각 점은 NN가지 색 중 하나를 가진다. 편의상 색은 1부터 NN까지의 수로 나타내고, 모든 점의 좌표는 서로 다르다.

각 점 pp에서 시작하는 직선 화살표로 다른 점 qq에 연결하려고 한다. 이때 점 qq는 pp와 같은 색인 점들 중 pp에서 가장 가까운 점이어야 한다. 가장 가까운 점이 여러 개라면 아무거나 하나를 고른다.

각 점 pp에서 위 조건을 만족하는 qq로 가는 화살표 ℓp⃗\vec{\ell_{p}}를 하나 그린다. 점 pp와 같은 색인 다른 점이 없으면 ∣ℓp⃗∣=0\left|\vec{\ell_{p}}\right|=0이다. 여기서 ∣ℓp⃗∣\left|\vec{\ell_{p}}\right|는 화살표 ℓp⃗\vec{\ell_{p}}의 길이를 나타낸다.

예를 들어 점을 순서쌍 (좌표, 색)으로 나타낼 때 p1p_1 = (0, 1), p2p_2 = (1, 2), p3p_3 = (3, 1), p4p_4 = (4, 1)라고 하자. 점 p1p_1의 화살표 ∣ℓp1⃗∣\left|\vec{\ell_{p_1}}\right|은 p1→p3p_1\rightarrow p_3로 연결된다. 점 p3p_3과 p4p_4의 화살표 ∣ℓp3⃗∣\left|\vec{\ell_{p_3}}\right|과 ∣ℓp4⃗∣\left|\vec{\ell_{p_4}}\right|는 각각 p3→p4p_3\rightarrow p_4와 p4→p3p_4\rightarrow p_3로 연결된다. 점 p2p_2의 경우 같은 색인 다른 점이 존재하지 않는다. 따라서 모든 화살표 길이의 합은 ∣ℓp1⃗∣+∣ℓp2⃗∣+∣ℓp3⃗∣+∣ℓp4⃗∣=3+0+1+1=5\left|\vec{\ell_{p_1}}\right|+\left|\vec{\ell_{p_2}}\right|+\left|\vec{\ell_{p_3}}\right|+\left|\vec{\ell_{p_4}}\right|=3+0+1+1=5이다.

점들의 좌표와 색이 주어질 때, 모든 점에서 시작하는 화살표 길이의 합, 즉 ∑p∣ℓp⃗∣\displaystyle\sum_{p}\left|\vec{\ell_{p}}\right|을 출력하는 프로그램을 작성하시오.

입력

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 점의 개수를 나타내는 정수 NN이 주어진다. 다음 NN개의 줄 각각에는 점의 좌표와 색을 나타내는 두 정수 xx와 yy가 주어진다.

출력

표준 출력으로 모든 점에서 시작하는 화살표 길이의 합을 출력한다.

제한

모든 서브태스크에서 점의 좌표 xx와 색 yy는 각각 0 ≤ xx ≤ 109, 1 ≤ yy ≤ NN을 만족한다.

예제3

  1. 예제 1

    입력
    4
    0 1
    1 2
    3 1
    4 1
    
    예상 출력
    5
    
  2. 예제 2

    입력
    4
    1 1
    0 2
    4 3
    3 4
    
    예상 출력
    0
    
  3. 예제 3

    입력
    9
    10 2
    11 3
    20 2
    22 1
    25 1
    0 1
    4 2
    5 2
    7 2
    
    예상 출력
    45