만드는 중입니다

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

Agar.io

면접 대비

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

요약
질량 2에서 시작하는 셀이 자기보다 작은 셀만 먹어서 가장 큰 상대 질량에 도달하는 최소 흡수 횟수를 구합니다.
난이도

보통10점 중 5점

유형
그리디, 정렬, 스택
정답자
아직 제출이 없습니다

문제

agar.io 게임은 한동안 인터넷에서 꽤 유명했던 게임으로, 웹 브라우저에서 진행된다. 서버에 접속한 각 플레이어는 질량을 가진 셀 하나를 조종한다. 자신보다 질량이 작은 셀을 만나면 그 셀을 흡수하고, 질량은 흡수한 셀의 질량만큼 늘어난다. 자신보다 질량이 크거나 같은 셀을 만나면 즉시 진다.

바이텍은 방금 서버에 접속했고, 그의 셀 질량은 2로 그리 크지 않다. 그는 이기고 싶어 한다. 즉, 이 서버에서 가장 큰 셀이 되고 싶다. 뛰어난 해킹 실력으로 다른 플레이어들의 이동을 막는 데 성공했다. 그래서 그는 흡수할 상대를 자유롭게 고를 수 있고, 다른 플레이어들은 그와 마주치는 것을 피할 수 없다.

이 좋은 상황은 오래가지 않는다. 관리자가 곧 바이텍의 차단을 풀 것이다. 바이텍은 1초 안에 다른 셀 하나를 흡수할 수 있다. 서버에서 가장 큰 셀이 되려면 몇 초가 걸리는가? 다른 가장 큰 셀과 질량이 같아져 비기는 것은 괜찮다.

서버에 있는 바이텍의 적들이 조종하는 셀들의 질량이 주어졌을 때, 바이텍이 게임에서 가장 큰 셀이 되는 데 필요한 최소 시간을 구하는 프로그램을 작성하라. 바이텍의 셀은 질량 2에서 시작한다는 점에 유의하라.

입력

첫째 줄에 바이텍의 적들이 조종하는 셀의 개수를 나타내는 자연수 NN (1≤N≤2000001 \le N \le 200000)이 주어진다. 둘째 줄, 즉 마지막 줄에는 공백으로 구분된 자연수 NN개 TiT_i (1≤Ti≤10181 \le T_i \le 10^{18})가 주어진다. 이는 적들의 셀 질량이다.

출력

다른 셀끼리는 서로 흡수하지 않는다고 가정할 때, 바이텍의 셀이 서버에서 가장 커지는 데 필요한 최소 초를 음이 아닌 정수 하나로 출력한다. 이 목표가 불가능하면 대신 NIE라는 단어만 출력한다.

예제3

  1. 예제 1

    입력
    7
    1 2 2 10 5 12 1
    
    예상 출력
    4
    
  2. 예제 2

    입력
    7
    3 4 5 3 6 4 3
    
    예상 출력
    NIE
    
  3. 예제 3

    입력
    8
    1 2 4 8 16 32 64 128
    
    예상 출력
    7