페이지

1300번: K번째 수

https://www.acmicpc.net/problem/1300


$O(n\lg k)$

파라매트릭 서치를 이용한다.


#include<cstdio>
#define min(x,y) x<y?x:y;
int n, k, l, r, m;
int main() {
    scanf("%d%d", &n, &k);
    l = 1; r = k;
    while (l <= r) {
        long long c = 0;
        m = (l + r) / 2;
        for (int i = 1; i <= n; i++) c += min(n, m / i);
        c < k ? l = m + 1 : r = m - 1;
    }
    printf("%d", l);
    return 0;
}

댓글 없음 :

댓글 쓰기