请问哪里错了???
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<stack>
#include<cmath>
#define Rint register int
#define ll long long
using namespace std;
ll le=1,ri=1000000000005,n,k,m;
bool check(int x){
ll r=n,d=k; //remain,date
for(;;){
ll p,q;
q=r/x;
if(q<=m){
return m*d>=r;
}
p=r/q-x+1;
if(p>d)p=d;
r-=p*q;
d-=p;
if(r<=0)return true;
if(d==0)return false;
}
}
int main(){
cin.tie(0);
cin>>n>>k>>m;
ri=n;
while(le<ri){
ll mid=(le+ri+1)>>1;
if(check(mid)){
le=mid;
}else{
ri=mid-1;
}
}
cout<<le;
return 0;
}