아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

시에르핀스키 미로에서 모이기

시간 제한3초메모리 제한512 MB

요약
행 번호와 열 번호의 이진 표현에 공통된 1 비트가 없는 칸에 선 관광객들이 이동 거리 합이 최소가 되는 하나의 칸에 모입니다.
난이도

어려움10점 중 9점

유형
트리, 분할 정복, 비트 연산
정답자
아직 제출이 없습니다

문제

체코에서 온 관광객 무리가 스스로를 닮은 이상한 모양의 미로를 걷고 있다. 미로의 평면도는 폴란드 수학자 바츠와프 시에르핀스키의 이름을 딴 프랙털인 시에르핀스키 삼각형이다.

미로는 위에서 아래로 00번부터 109−110^9 - 1번까지 번호가 붙은 10억 개의 행과, 왼쪽에서 오른쪽으로 00번부터 109−110^9 - 1번까지 번호가 붙은 10억 개의 열로 이루어진다. 각 칸은 빈 칸이거나 막힌 칸이다.

XX행 YY열의 칸은 XX와 YY의 비트 AND 연산 결과가 00이면 빈 칸이고, 그렇지 않으면 막힌 칸이다. 다시 말해 XX와 YY를 이진수로 적었을 때 오른쪽에서 kk번째 자리가 둘 다 11인 kk가 존재하면 그 칸은 막혀 있다.

관광객들은 하루 종일 헤매고 다녀서 지쳤고, 빈 칸 하나에 모여 각자의 경험을 나누려고 한다. 한 번의 이동에서 관광객 한 명은 위, 아래, 왼쪽, 오른쪽으로 인접한 빈 칸 하나로 뛸 수 있다.

관광객들의 현재 위치가 주어지면 모두가 같은 칸에 모이는 데 필요한 전체 이동 횟수의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 관광객의 수 NN이 주어진다. (1≤N≤1000001 \le N \le 100000)

다음 NN개 줄에는 ii번째 관광객이 서 있는 칸의 행 번호 RiR_i와 열 번호 SiS_i가 공백을 사이에 두고 주어진다. (0≤Ri,Si≤109−10 \le R_i, S_i \le 10^9 - 1)

모든 관광객은 빈 칸에 서 있다. 즉 RiR_i와 SiS_i의 비트 AND 연산 결과는 00이다. 한 칸에 관광객이 여러 명 서 있을 수도 있다.

출력

첫째 줄에 필요한 이동 횟수의 최솟값을 출력한다.

답이 32비트 정수의 범위를 넘을 수 있으므로 64비트 정수 자료형(C나 C++의 long long, 파스칼의 int64)을 쓰는 편이 좋다.

힌트

첫 번째 예제에서 관광객들이 모일 수 있는 칸 중 하나는 (2, 0)이다.

두 번째 예제에서 관광객들이 모일 수 있는 칸 중 하나는 (8, 4)이다.

예제2

  1. 예제 1

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

    입력
    6
    2 5
    3 4
    8 7
    9 6
    10 5
    11 4
    
    예상 출력
    50