在别的oj上通过了,洛谷上WA#2
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k,w[100010],h[100010],l=1,r=100000;
int check(int x)//计算边长为x时能分几块巧克力
{
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=(w[i]/x)*(h[i]/x);
}
return sum;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>w[i]>>h[i];
while(1)//二分
{
int mid=(l+r)/2;
int w=check(mid);
int w1=check(mid+1);
if(w<k)
{
r=mid-1;
}else if(w>k)
{
l=mid+1;
}else
{
cout<<mid;
break;
}
if(w<k&&w1>k)
{
cout<<mid+1;
break;
}
if(w>k&&w1<k)
{
cout<<mid;
break;
}
if(l>r)break;
}
return 0;
}