OJ的题目:
题目描述
暑假期间小C参加了n个培训班,每个培训班都有布置作业,第 i 个学科的作业量为a[i]。恰巧的是小C的妈妈和爸爸会出门旅游去了, t小时后才回来。 小C必须在爸爸妈妈回到家前完成所有的作业,但是可以自行决定做作业的速度 k (每小时完成k的作业量)。 每个小时,她将会选择一科的作业,完成的作业量为 k。如果某个学科的作业量少于 k ,完成这科作业后,这一小时内小C将选择休息。小C喜欢慢慢做作业,请计算她完成任务的最小的k是多少?
输入格式
第一行两个正整数n和t,第二行n个正整数a[i]
输出格式
最小的k的值
样例
输入样例
5 6
8 11 12 13 15
输出样例
13
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,a[1000001],l,r,t,sum;
int main(){
scanf("%lld%lld",&n,&t);
for (ll i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+n+1);
l=1;
r=100001;
while(l<r)
{
ll mid=(l+r)>>1;
sum=0;
for (ll i=1;i<=n;i++)
{
if (a[i]%mid==0)
sum+=(a[i]/mid);
else
sum+=(a[i]/mid+1);
}
if (sum<=t)
r=mid;
else
l=mid+1;
}
printf("%lld",l);
return 0;
}
求帮忙qwq