非常容易理解,目前还不知道是否正确,, 见谅哦
大体意思就是,用宽和长同时除以 边长,然后用结果相乘,然后相加,如果超过等于K 个人, 然后-1就是最大的
#include<stdio.h>
int main()//应该对吧。。。
{
int s = 0;
int n,i,j,k,l,p,o,g;
int a[100010][2];//两列存储数组
scanf("%d%d",&n,&k);//n,k
for(i = 0; i < n; i++)//输入
{
scanf("%d%d",&a[i][0],&a[i][1]);
}
for(j = 1;;j++)//从每个人一个开始
{
s = 0;
for(i = 0;i < n;i++)
{
g = a[i][0] / j;//计算行有几个 j 列
o = a[i][1] / j;//计算列有几个 j
l = g * o;//一共有多少个
s += l;//加
}
if(s < k)//如果 宽度为n的正方形大小,只有s个,没有超过k个人数
{ //则说明最大的就是 j - 1;
printf("%d",j - 1);
return 0;
}
}
}
//目前就这水平