|
|
|
|
@ -30,30 +30,14 @@ int main()
|
|
|
|
|
for (int t = 1; t <= T; t++)
|
|
|
|
|
{
|
|
|
|
|
scanf("%d%d", &n, &K);
|
|
|
|
|
for (int i = 0; i < n; i++)
|
|
|
|
|
scanf("%d", a + i);
|
|
|
|
|
sort(a, a + n, greater<int>());
|
|
|
|
|
int L = a[0], R = a[0] * n + 1, M = L;
|
|
|
|
|
while (L < R - 1)
|
|
|
|
|
{
|
|
|
|
|
M = (L + R) >> 1;
|
|
|
|
|
if (calc(n, M) <= K)
|
|
|
|
|
R = M;
|
|
|
|
|
else
|
|
|
|
|
L = M;
|
|
|
|
|
}
|
|
|
|
|
//if (calc(n, M = L) > K) M = L + 1;
|
|
|
|
|
int flag = 1;
|
|
|
|
|
for (int st = max(a[0], M - 100);; st++)
|
|
|
|
|
for (int i = 0; i < n; i++) scanf("%d", a + i);
|
|
|
|
|
sort(a, a + n);
|
|
|
|
|
for (int st = accumulate(a, a + n, K - 1) / K;; st++)
|
|
|
|
|
if (calc(n, st) <= K)
|
|
|
|
|
{
|
|
|
|
|
printf("Case #%d: %d\n", t, st);
|
|
|
|
|
flag = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (flag)
|
|
|
|
|
for (;;)
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|