//二分答案
#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藍橋杯 分巧克力
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.