만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

아이템

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

요약
수직선 위 아이템의 좌표가 주어질 때, 아이템을 주울 때마다 이동 거리가 두 배가 되는 조건에서 주원이 주울 수 있는 아이템의 최대 개수를 구합니다.
난이도

보통10점 중 6점

유형
비트 연산, 트라이, 그리디
정답자
아직 제출이 없습니다

문제

좌우로 무한히 긴 수직선 위에 NN개의 아이템이 떨어져 있다. ii번째 아이템의 위치는 X_iX\_i이며, 같은 위치에 여러 개의 아이템이 있을 수 있다. 현재 위치 00에 있는 주원이는 최대한 많은 개수의 아이템을 줍고 싶다.

처음에 주원이는 한 번 이동할 때마다 왼쪽 또는 오른쪽으로 1만큼 움직일 수 있다. 다만 아이템을 하나 주울 때마다 이동 거리가 2배로 늘어난다. 즉, 현재까지 획득한 아이템이 kk개라면 수직선 위에서 한 번 이동할 때마다 왼쪽 또는 오른쪽으로 2k2^k만큼 움직일 수 있다. 이동 중에는 중간에 멈출 수 없다.

아이템은 그 아이템이 있는 위치에 멈춰야 주울 수 있다. 아이템이 있는 위치에 멈췄더라도 줍지 않을 수 있다. 아이템을 주우면 그 아이템은 그 자리에서 사라진다.

주울 수 있는 아이템의 최대 개수를 구한다.

입력

첫째 줄에 아이템의 개수 NN이 주어진다.

둘째 줄에 아이템의 위치 X_1,X_2,⋯ ,X_NX\_1,X\_2,\cdots ,X\_N이 공백으로 구분되어 주어진다.

출력

주울 수 있는 아이템의 최대 개수를 출력한다.

제한

  • 1≤N≤2×1051\leq N\leq 2\times 10^5
  • 0≤X_i≤10180\leq X\_i\leq 10^{18} (1≤i≤N)(1\le i\le N)
  • 입력으로 주어지는 수는 모두 정수이다.

힌트

입출력 양이 많으므로 문제지 2에서 4쪽의 언어 가이드에 있는 빠른 입출력을 사용하는 것을 권장한다.

예제3

  1. 예제 1

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

    입력
    5
    5 39 19 27 11
    
    예상 출력
    5
    
  3. 예제 3

    입력
    3
    0 0 1000000000000000000
    
    예상 출력
    3