TLE求助 怎么降时间复杂度啊
查看原帖
TLE求助 怎么降时间复杂度啊
834070
szz123456楼主2023/4/5 20:14
#include<iostream>
#include<algorithm>
using namespace std;
long long q[100010];
int main()
{
	long long n, k, i,sum=0;
	scanf("%lld%lld", &n, &k);
	for (i = 0; i < n; i++)scanf("%lld", &q[i]);
	sort(q, q + n);
	long long l = 1, r = q[n - 1];
	while (l < r)
	{
		long long mid = (l + r) / 2;
		for (i = 0; i < n; i++)
		{
			sum += q[i] / mid;
		}
		if (sum >= k)
		{
			printf("%lld",mid);
			return 0;
		}
		else
		{
			r--;
			sum = 0;
		}
	}
	printf("%lld", l);
	return 0;
}
2023/4/5 20:14
加载中...