class Solution {
public int smallestDivisor(int[] nums, int threshold) {
int divLeft = 1;
int divRight = 1000000;
int temp = 0;
while (divLeft < divRight) {
int mid = divLeft + (divRight - divLeft) / 2;
temp = divisor(nums, mid);
if (temp <= threshold) {
divRight = mid;
} else {
divLeft = mid + 1;
}
}
return divLeft;
}
public int divisor(int[] nums, int mid) {
int sum = 0;
for (int num : nums) {
sum += num / mid;
if (num % mid != 0) {
sum++;
}
}
return sum;
}
}
Y2xhc3MgU29sdXRpb24gewogICAgcHVibGljIGludCBzbWFsbGVzdERpdmlzb3IoaW50W10gbnVtcywgaW50IHRocmVzaG9sZCkgewogICAgICAgIAogICAgICAgIGludCBkaXZMZWZ0ID0gMTsKICAgICAgICBpbnQgZGl2UmlnaHQgPSAxMDAwMDAwOwogICAgICAgIGludCB0ZW1wID0gMDsKICAgICAgICB3aGlsZSAoZGl2TGVmdCA8IGRpdlJpZ2h0KSB7CgogICAgICAgICAgICBpbnQgbWlkID0gZGl2TGVmdCArIChkaXZSaWdodCAtIGRpdkxlZnQpIC8gMjsKICAgICAgICAgICAgdGVtcCA9IGRpdmlzb3IobnVtcywgbWlkKTsKICAgICAgICAgICAgaWYgKHRlbXAgPD0gdGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICBkaXZSaWdodCA9IG1pZDsKCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkaXZMZWZ0ID0gbWlkICsgMTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIHJldHVybiBkaXZMZWZ0OwogICAgfQoKICAgIHB1YmxpYyBpbnQgZGl2aXNvcihpbnRbXSBudW1zLCBpbnQgbWlkKSB7CiAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgZm9yIChpbnQgbnVtIDogbnVtcykgewogICAgICAgICAgICBzdW0gKz0gbnVtIC8gbWlkOwogICAgICAgICAgICBpZiAobnVtICUgbWlkICE9IDApIHsKICAgICAgICAgICAgICAgIHN1bSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdW07CiAgICB9CgoKfQ==