From c1f241ff5ab8f6c2b32da1fca617b9ec7bbe226f Mon Sep 17 00:00:00 2001 From: 0x01FE Date: Thu, 6 Feb 2025 19:52:34 -0600 Subject: [PATCH] solved a2p3 --- MAIN8_C/MAIN8_C.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 MAIN8_C/MAIN8_C.cpp diff --git a/MAIN8_C/MAIN8_C.cpp b/MAIN8_C/MAIN8_C.cpp new file mode 100755 index 0000000..fdcca26 --- /dev/null +++ b/MAIN8_C/MAIN8_C.cpp @@ -0,0 +1,56 @@ +#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; +} +