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

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

두 섬 사이의 이동

면접 대비

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

요약
이웃한 두 섬을 잇는 다리가 완공될 때마다 서로 왕래할 수 있는 섬 쌍의 수와 그 쌍들의 다리 건넘 횟수 합을 출력합니다.
난이도

보통10점 중 5점

유형
유니온 파인드, 수학
정답자
아직 제출이 없습니다

문제

11번부터 NN번까지 번호가 붙은 섬 NN개가 일렬로 늘어서 있다. 섬 사이에 다리가 없어서 배로만 오갈 수 있었기에 정부는 섬 ii와 섬 i+1i+1을 잇는 다리를 N−1N-1개 짓기로 했다. 다리를 한 번에 다 지을 수는 없으므로 정해진 순서대로 하나씩 완성한다.

다리가 하나 완성될 때마다 정부는 다음 두 값을 알고 싶어 한다.

  • 서로 오갈 수 있는 섬 쌍 (i,j)(i, j) (i<ji < j)의 개수
  • 그런 쌍마다 섬 ii에서 섬 jj까지 가는 데 건너야 하는 최소 다리 개수를 모두 더한 값

정부가 원하는 두 값을 다리가 완성되는 순간마다 구하라.

입력

첫째 줄에 섬의 개수 NN (2≤N≤1052 \le N \le 10^5)이 주어진다.

다음 N−1N-1개 줄에는 각 줄마다 정수 ii (1≤i<N1 \le i < N)가 하나씩 주어진다. 이는 섬 ii와 섬 i+1i+1을 잇는 다리를 그 차례에 짓는다는 뜻이다. 같은 수가 두 번 주어지는 경우는 없다.

출력

다리를 하나 지을 때마다 위의 두 값을 공백으로 구분해 한 줄에 출력한다. 모두 N−1N-1개 줄을 출력한다.

예제5

  1. 예제 1

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

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

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

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

    입력
    5
    2
    3
    1
    4
    
    예상 출력
    1 1
    3 4
    6 10
    10 20