#include #include #include #define MAX_BOXES 50000 bool check_candies(int boxes[], int mid, int student_count, int box_count) { for (int i = 0; i < box_count; ++i) { student_count -= boxes[i] / mid; if (student_count < 1) return true; } return false; } // O(log n) int main() { int t; std::scanf("%d", &t); int boxes[MAX_BOXES]; while (t--) { int n, k; std::scanf("%d %d", &n, &k); int largest = INT_MIN; for (int i = 0; i < n; i++) { std::scanf("%d", &boxes[i]); if (boxes[i] > largest) largest = boxes[i]; } int low = 0; int high = largest; while (low < high) { int mid = low + (high - low + 1) / 2; if (check_candies(boxes, mid, k, n)) { low = mid; } else { high = mid - 1; } } std::printf("%d\n", low); } return 0; }