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

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

중앙값 제거

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

요약
어떤 수가 0이 될 때까지 중앙값을 2로 나눈 몫으로 바꾸는 연산을 반복하고, 그 횟수를 구한다.
난이도

보통10점 중 5점

유형
힙, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

NN개의 자연수 a_1a\_1, a_2a\_2, ......, a_Na\_N이 주어진다. 0을 좋아하는 amel은 NN개의 수 중 0이 등장할 때까지 다음 연산을 반복하려고 한다.

  • 중앙값을 2로 나누고 나머지는 버린다.

중앙값은 NN개의 수를 오름차순으로 나열했을 때 ⌊N+12⌋\lfloor\cfrac{N+1}{2}\rfloor번째에 위치한 수이다. 또한 ⌊x⌋\lfloor x\rfloor은 xx 이하이면서 가장 큰 정수를 뜻한다.

예를 들어, \[7,3,9,5]\[7, 3, 9, 5] 에서 한 번의 연산을 수행하면 \[7,3,9,2]\[7, 3, 9, 2]가 된다.

amel이 몇 번의 연산을 수행하여야 목표를 달성할 수 있을지 계산해주자.

입력

첫째 줄에 수의 개수 NN이 주어진다. (1≤N≤2×1061 \le N \le 2 \times 10^6)

둘째 줄에 자연수 a_1a\_1, a_2a\_2, ......, a_Na\_N이 공백을 사이에 두고 주어진다. (1≤a_i≤1091 \le a\_i \le 10^9)

입력되는 수가 매우 많음에 유의하자.

출력

amel이 수행하여야 하는 연산의 횟수를 한 줄로 출력한다.

힌트

C, C++에서 std::cin을 사용하면 시간 초과를 받을 수 있습니다. scanf를 사용하거나, 이 링크 또는 검색을 통해 빠른 입력방법을 사용하는 것을 추천드립니다.

예제2

  1. 예제 1

    입력
    4
    7 3 9 5
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3
    2021 1127 1400
    
    예상 출력
    21