省赛的时候抽搐了,边界是max和sum
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int T, m, n;
int main()
{
scanf("%d", &T);
while(T--)
{
scanf("%d%d", &n, &m);
int tmp, _max;
long long sum, res, mid;
sum = _max = 0;
for(int i = 0; i < n; i++)
{
scanf("%d", &tmp);
_max = max(_max, tmp);
sum += tmp;
}
long long l = _max, r = sum;
while(l <= r)
{
mid = (l + r) >> 1;
if(mid * m >= sum)
{
res = mid;
r = mid - 1;
}
else
l = mid + 1;
}
printf("%lld\n", res);
}
return 0;
}