bool dep(int n,int mid,int*quantities,int quantitiesSize)
{
int ans=0;
for(int i=0;i<quantitiesSize;i++)
{
ans+=quantities[i]/mid;
ans=quantities[i]%mid==0?ans:ans+1;
}
return ans<=n;
}
//二分法
int minimizedMaximum(int n, int* quantities, int quantitiesSize)
{
int left=1,right=0;
for(int i=0;i<quantitiesSize;i++)
{
if(quantities[i]>right)
right=quantities[i];
}
while(left<=right)
{
int mid=left+(right-left)/2;
if(dep(n,mid,quantities,quantitiesSize))
{
right=mid-1;
}
else
{
left=mid+1;
}
}
return left;
}