Super Shy (Hard)

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

요약
N개의 좌석에서 각 사람이 가장 가까운 사람과의 거리를 최대화하는 자리를 택할 때, 전체적으로 최대 몇 명이 앉을 수 있는지 구한다.
난이도

보통10점 중 7점

유형
수학, 그리디, 구현, 조합론
정답자
아직 제출이 없습니다

문제

일렬로 배치된 빈 좌석 NN개가 있고, 사람들이 한 명씩 차례대로 앉으려고 한다.

사람들은 부끄러움을 많이 타기 때문에 현재 앉아 있는 사람과 최대한 멀리 떨어져 앉으려고 한다. 구체적으로, 앉을 수 있는 좌석은 아래 규칙을 따른다.

  • 만약 먼저 앉은 사람이 아무도 없을 경우 아무 자리에나 앉을 수 있다.
  • 만약 먼저 앉은 사람이 있고 바로 옆 자리에 사람이 없는 좌석이 있다면, 그러한 좌석들 중 가장 가까운 사람과의 거리가 가장 먼 자리들 중 한 곳에 앉을 수 있다.
  • 만약 먼저 앉은 사람이 있고 바로 옆 자리에 사람이 없는 좌석이 없다면, 더 이상 앉을 수 없다.

이 사람들은 부끄러움이 많기는 하지만 동시에 공익을 추구하는 착한 사람들이기 때문에, 이러한 조건을 만족하는 자리들 중에서 결과적으로 최대한 많은 사람이 앉을 수 있는 자리를 선택할 것이다.

좌석의 수 NN이 주어질 때 앉을 수 있는 최대 사람 수를 구하여라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤100,0001\leq T\leq 100\\, 000)

둘째 줄부터 TT개의 줄에 테스트 케이스가 한 줄에 하나씩 주어진다. 각 테스트 케이스의 첫째 줄에는 좌석의 수 NN이 주어진다. (1≤N≤10181\leq N\leq 10^{18})

출력

각 테스트 케이스에 대해, 앉을 수 있는 최대 사람 수를 출력한다.

예제1

  1. 예제 1

    입력
    5
    1
    2
    3
    7
    15
    
    예상 출력
    1
    1
    2
    4
    7