题意:
n种糖果,分给k个人。
每种糖果个数p[i];
要求每个人只能分一种糖果。
求每个人最多能分几个糖果。
例:
输入:
4 11 //n,k
2 4 6 8 //每种糖果的个数
输出:
1 //每个人最多能分的糖果数
二分答案。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int n,k;
int p[10010];
int check(int a)
{
int i,sum=0;
for(i=0;i<n;i++)
{
int t=p[i];
while(t>=a){
t-=a;
sum++;
}
}
return sum;
}
int main()
{
int i,j;
scanf("%d%d",&n,&k);
int mx=-1;
for(i=0;i<n;i++){
scanf("%d",&p[i]);
mx=max(mx,p[i]);
}
int l=0,r=mx;
while(l<r)
{
int mid=(r+l+1)/2;
int t=check(mid);
if(t>=k)
l=mid;
else
r=mid-1;
}
printf("%d\n",l);
}