만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

큰 집합

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

요약
n개의 원소를 f로 m개의 값에 나누는 모든 경우에 대해 Merlin이 증명할 수 있는 최대 크기 z를 구합니다.
난이도

보통10점 중 5점

유형
수학, 그리디
정답자
아직 제출이 없습니다

문제

어리석은 왕국에서는 별일이 다 일어난다. 마법사 멀린과 기사 아서는 가끔 멀린이 어떤 집합 SS가 크다는 것을 아서에게 증명하는 놀이를 한다. 집합이 너무 커서 멀린은 원소를 전부 아서에게 보여줄 수 없다. 최근 두 사람은 좋은 증명 방법을 찾아냈다. 아서가 무작위로 해시 함수 hh와 수 yy를 고르면, 멀린은 h(s)=yh(s) = y를 만족하는 s∈Ss \in S를 보여준다. 옛 필사본에는 '큰 집합'과 '무작위 해시 함수'를 제대로 정의하면 이 방법이 맞는다는 것을 엄밀하게 증명할 수 있다고 적혀 있었다. 하지만 이제 두 사람은 한 걸음 더 나아가 2단계 방식을 고안했다.

함수 ff를 생각하자. Sy={s∈S∣f(s)=y}S_y = \{s \in S \mid f(s)=y\}의 원소가 kk개 이상이면 yy를 kk-좋은 값이라고 한다. 멀린이 kk-좋은 값들의 집합 GG가 dd개 이상의 원소를 가진다는 것을 증명하면, SS의 크기는 적어도 kdkd이다.

원소가 nn개인 집합 SS와, 1부터 mm까지의 정수 값을 갖는 함수 ff를 생각하자. 아서는 최악의 경우에 관심이 있다. 어떤 함수 ff가 주어지더라도, 멀린이 위의 방법으로 SS의 원소가 적어도 zz개 있다고 증명할 수 있는 최대 zz는 얼마인가? 멀린은 kk와 dd를 고를 수 있지만, 집합의 크기에 관한 참인 주장만 증명할 수 있다.

입력

입력 파일에는 두 수 nn과 mm이 들어 있다 (1≤n≤10181 \le n \le 10^{18}, 1≤m≤1000001 \le m \le 100000).

출력

한 개의 수 zz를 출력하라. zz는 최대 수이며, 임의의 함수 f:S→{1,…,m}f:S \to \{1,\ldots,m\}에 대해, dk≥zdk \ge z를 만족하는 어떤 dd와 kk에 대하여 멀린이 kk-좋은 값이 적어도 dd개 있다고 증명할 수 있어야 한다.

예제1

  1. 예제 1

    입력
    5 2
    
    예상 출력
    4