문제
풀이
배열에서 $1$부터 $i$까지 개수의 총합을 $C(i)$라 합시다.
우리는 $C(i) \ge k$인 $i$의 최솟값을 찾으면 됩니다.
$r$행에서 $i$보다 작은 수의 개수는 $i$ 이하의 $r$의 배수와 같고, 이는 $\lfloor i / r \rfloor$로 계산할 수 있습니다.
따라서 $C(i)$를 $O(N)$에 계산할 수 있고, 이분 탐색을 이용하면 $O(N\log N^2) = O(N\log N)$에 해결할 수 있습니다.
코드
1 | |