RT,看起来很简单的一个题,但是 WA 掉了,大佬帮忙看一看这个思路对不对
#include<iostream>
#include<cstdio>
using namespace std;
int n,k;
bool check(int x){
int m1=0,m2=k,zeng=0,sum=0;
for(int i=x;i>=1;i--){
sum+=k/i;
m1+=k%(m1+m2);
m2-=k%(m1+m2);
if(m2<=0){
zeng++;
m1-=k;
m2=k-m1;
}
if(m1) m1--;
else m2--;
}
if(sum+zeng>=n||sum+zeng>=n-1&&m1) return true;
return false;
}
int main(){
scanf("%d%d",&n,&k);
int ans=0;
if(!check(k)){
printf("Poor E.S.!");
return 0;
}
int l=1,r=k;
while(l<r-1){
int mid=(l+r)>>1;
if(check(mid)) r=mid;
else l=mid-1;
}
if(check(l)) printf("%d",l);
else printf("%d",r);
return 0;
}
8cdx