#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<string>
#include<set>
using namespace std;
#define ll long long
const int maxn=100005;
int h[maxn];
int w[maxn];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&h[i]);
scanf("%d",&w[i]);
}
int l=1;
int r=100000; 数据范围,由题可知
int mid; ///代表分割长度
int cnt;
int ans;
while(l<=r) ///二分
{
mid=(l+r)/2;
cnt=0;
for(int i=1;i<=n;i++)
{
int x,y;
x=h[i]/mid;
y=w[i]/mid;
cnt+=x*y; ///由题意可知:(6/2*5/2)=6, (6/3*5/3)=2
}
if(cnt>=k) ///切多了,代表mid(切割长度)小了,进入右区间
{
l=mid+1;
ans=mid;
}
else
{
r=mid-1;
}
}
printf("%d\n",ans);
}
[蓝桥杯2017初赛]分巧克力 (二分)
最新推荐文章于 2024-02-01 10:24:14 发布