RT,应该是比较易懂的二分思路
WA了最后一点,其他的AC
代码:
#include <iostream>
using namespace std;
int n,m,k,num[1000010],ans;
bool check(int a)
{
int ans = 0;
for(int i = 0;i < n;i++)
{
ans += (num[i] / a);
if(ans >= k)
{
return 1;
}
}
return 0;
}
int main()
{
cin >> n >> k;
for(int i = 0;i < n;i++)
{
cin >> num[i];
m += num[i];
}
if(m < k)
{
cout << 0;
return 0;
}
int l = 0,r = 100000001;
while(l < r)
{
int mid = (l + r) / 2;
if(check(mid))
{
ans = mid;
l = mid + 1;
}
else
{
r = mid - 1;
}
}
cout << ans;
return 0;
}