//二分答案
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,k,l,r,ans;
struct cho{
int x,y;
};
cho c[100010];
int judge(int x){
int tot=0;//表示以x为边长的巧克力能分多少块
for(int i=1;i<=n;i++){
tot+=(c[i].x/x)*(c[i].y/x);
}
return tot>=k;//能分返回1,不能返回0
}
int main()
{
scanf("%d%d",&n,&k);
l=1;
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
r=max(r,min(x,y));
c[i].x=x;c[i].y=y;
}
while(l<=r)
{
int mid=(l+r)/2;
if(judge(mid)){
ans=mid;
l=mid+1;
}
else r=mid-1;
}
printf("%d",ans);
}
17蓝桥杯 分巧克力
最新推荐文章于 2023-03-19 17:27:05 发布