전쟁 중의 삶

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

요약
무한 이진 힙 트리에서 서로 다른 N개 도시(모두 250 미만)가 주어질 때, 군대가 주둔한 도시와 두 군대 사이 경로 위에 있는 도시의 수를 센다.
난이도

보통10점 중 6점

유형
트리, 해시맵, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

석환나라에 전쟁이 일어났다. 석환나라는 거대한 이진 트리 모양의 국가로, 1, 2, ..., 1010010^{100}까지 번호가 붙은 1010010^{100}개의 도시로 이루어져 있다. 석환나라에는 10100−110^{100}-1개의 도로가 있는데, 이 중 ii번째 도로는 (1≤i<101001 \le i < 10^{100}) ⌊i+12⌋\lfloor \frac{i+1}{2} \rfloor번 도시와 i+1i+1번 도시를 잇는다. 이를 그림으로 나타내면 아래와 같다.

총리 윈스턴 아기서콴(Winston Agiseokhwan)은 위기에 빠진 석환나라를 구하는 중대한 임무를 맡고 있다. 석환나라의 적국들은 석환나라의 중요 군 시설을 방해하려 하기 때문에, 석환나라의 국민을 보호하려면 군대가 자주 오가는 도시를 우선 방어하는 것이 효과적이다. 석환나라에는 NN개의 군부대가 서로 다른 도시에 있고, 군부대들은 서로 물자나 정보를 주고받기 위해 오간다.

어떤 도시가 위험하다는 것은, 그 도시에 군부대가 있거나, 경로가 그 도시를 지나는 서로 다른 두 군부대가 존재함을 뜻한다. 석환나라는 트리이고 경로는 같은 도시를 두 번 방문하지 않아야 한다고 정의되므로, 두 군부대를 지나는 경로는 언제나 유일하다.

아기서콴 총리를 위해 석환나라에 있는 위험한 도시의 개수를 계산하자.

입력

첫 번째 줄에 군부대의 수 NN이 주어진다. (2≤N≤250,0002 \le N \le 250{,}000)

이후 NN개의 줄에 군부대가 있는 도시의 번호를 나타내는 수열 A1,…,ANA_1, \ldots, A_N이 주어진다. 주어지는 도시들은 서로 다르다. (1≤Ai<2501 \le A_i < 250)

출력

석환나라에 있는 위험한 도시의 개수를 출력하라.

예제2

  1. 예제 1

    입력
    4
    4 5 6 7
    
    예상 출력
    7
    
  2. 예제 2

    입력
    2
    1 4294967296
    
    예상 출력
    33