60018 두 배
문제
길이 인 양의 정수열 이 주어진다. 이 수열을 오름차순으로 만들려 한다. 수열 이 오름차순이라는 것은, 각 ()에 대해 이라는 것이다.
수열 를 오름차순으로 만들기 위해, 수열 에 다음 연산을 몇 번이든 반복해서 적용할 수 있다.
- 어떤 ()에 대해 에 를 곱한다.
연산을 최소 횟수로 적용해서 를 오름차순으로 만들고 싶다. 이때, 최소 횟수를 구하라.
입력
첫 번째 줄에 이 주어진다.
두 번째 줄에 이 주어진다.
출력
첫 번째 줄에 답을 출력한다.
제한
- 주어지는 모든 수는 정수이다.
- ()
서브태스크
| 1 | 12 | 각 ()에 대해, 또는 |
|---|---|---|
| 2 | 10 | 각 ()에 대해, 를 만족하는 이상의 정수 가 존재 |
| 3 | 11 | |
| 4 | 19 | 각 ()에 대해, 또는 |
| 5 | 20 | 각 ()에 대해, |
| 6 | 28 | 추가 제약 조건 없음 |
힌트
예제 1
, 에 각각 두 번씩 연산을 적용하면 된다. 연산을 적용한 이후에 수열 는 가 된다.
예제 2
에 두 번, 에 세 번, 에 한 번 연산을 적용하면 된다. 연산을 적용한 이후에 수열 는 가 된다.
예제 입출력
예제 입력 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
에디터 불러오는 중...