2014/7/1
我是彩笔系列
校赛暴零
#include<stdio.h>
#include<string.h>
#include<climits>
using namespace std;
int s[500005];
int main()
{
int n, m;
while(~scanf("%d%d",&n,&m))
{
if(n==-1&&m==-1)break;
int mid ,minn=INT_MAX,maxn=INT_MIN;
for(int i= 1;i <= n; i++)
{
scanf("%d",&s[i]);
if(minn > s[i])minn=s[i];
if(maxn < s[i])maxn=s[i];
}
minn = 1;
while(minn < maxn)
{
mid =(minn + maxn)/2;
int num=0;
for(int i = 1;i <= n; i++)
{
if(s[i]%mid)num+=s[i]/mid+1;
else num+=s[i]/mid;
}
if(m >= num)maxn=mid;
else if(m < num)minn=mid+1;
}
printf("%d\n",minn);
}
return 0;
}