为什么在第34行那里我把l=mid-1改成l=mid就通过全部测试了呢(没改之前第六第七个测试点超时)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
long long n,k,a[100005],r,l,mid,sum,mark=0;
bool cmp(int a,int b){
return a>b;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
r=0;
l=a[1];
while(r!=l-1){
sum=0;
mid=(r+l)/2;
if(mid==0) break;
for(int i=1;i<=n;i++){
if(a[i]/mid!=0){
sum+=a[i]/mid;
}
else{
break;
}
}
if(sum>=k){
r=mid;
}
else{
l=mid;
}
}
for(int i=1;i<=n;i++){
if(l==0) break;
if(a[i]/l!=0){
mark+=a[i]/l;
}
else{
break;
}
}
if(mark>=k){
cout<<l;
}
else{
cout<<r;
}
return 0;
}