60018 두 배

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

문제

길이 NN인 양의 정수열 A1,…,ANA_1, \dots , A_N이 주어진다. 이 수열을 오름차순으로 만들려 한다. 수열 A1,…,ANA_1, \dots , A_N이 오름차순이라는 것은, 각 ii (1≤i≤N−11 ≤ i ≤ N - 1)에 대해 Ai≤Ai+1A_i ≤ A_{i+1}이라는 것이다.

수열 AA를 오름차순으로 만들기 위해, 수열 AA에 다음 연산을 몇 번이든 반복해서 적용할 수 있다.

  • 어떤 ii (1≤i≤N1 ≤ i ≤ N)에 대해 AiA_i에 22를 곱한다.

연산을 최소 횟수로 적용해서 AA를 오름차순으로 만들고 싶다. 이때, 최소 횟수를 구하라.

입력

첫 번째 줄에 NN이 주어진다.

두 번째 줄에 A1,…,ANA_1, \dots , A_N이 주어진다.

출력

첫 번째 줄에 답을 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N≤250 0001 ≤ N ≤ 250\, 000
  • 1≤Ai≤1 000 0001 ≤ A_i ≤ 1\, 000\, 000 (1≤i≤N1 ≤ i ≤ N)

서브태스크

112각 ii (1≤i≤N1 ≤ i ≤ N)에 대해, Ai=1A_i = 1 또는 Ai=2A_i = 2
210각 ii (1≤i≤N1 ≤ i ≤ N)에 대해, Ai=2kiA_i = 2^{k_i}를 만족하는 00 이상의 정수 kik_i가 존재
311N≤10N ≤ 10
419각 ii (1≤i≤N1 ≤ i ≤ N)에 대해, Ai=2A_i = 2 또는 Ai=3A_i = 3
520각 ii (1≤i≤N−11 ≤ i ≤ N - 1)에 대해, Ai≥Ai+1A_i ≥ A_{i+1}
628추가 제약 조건 없음

힌트

예제 1

A2A_2, A4A_4에 각각 두 번씩 연산을 적용하면 된다. 연산을 적용한 이후에 수열 AA는 [3,4,4,4,5][3, 4, 4, 4, 5]가 된다.

예제 2

A2A_2에 두 번, A4A_4에 세 번, A5A_5에 한 번 연산을 적용하면 된다. 연산을 적용한 이후에 수열 AA는 [3,4,5,8,10][3, 4, 5, 8, 10]가 된다.

예제 입출력

예제 입력 1
5
3 1 4 1 5
예제 출력 1
4
예제 입력 2
5
3 1 5 1 5
예제 출력 2
6
예제 입력 3
5
1 2 3 4 5
예제 출력 3
0

출처

올림피아드 › 한국정보올림피아드 › KOI 2024 1차 › 초등부 2번 › 중등부 1번
solution.cpp
에디터 불러오는 중...