diff --git a/src/apple.c b/src/apple.c index 766d543..b712291 100644 --- a/src/apple.c +++ b/src/apple.c @@ -4,14 +4,29 @@ int n; int k; int A[100000]; - int main(){ int i, lb, ub; scanf("%d%d", &n, &k); for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000000; + int siguma; + while(ub - lb > 1) { + int mid = (lb + ub) / 2; + siguma = 0; + for(i = 0; i < n; i++){ + siguma = siguma + (A[i] + mid - 1) / mid; + } + if(siguma <= k){ + ub = mid; + } + else{ + lb = mid; + } + } - + printf("%d\n" , ub); return 0; } diff --git a/src/array.c b/src/array.c index 13ed925..73311be 100644 --- a/src/array.c +++ b/src/array.c @@ -4,15 +4,24 @@ int n; int k; int A[100000]; - int main(){ int i, lb, ub; scanf("%d%d", &n, &k); for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + lb = -1; + ub = n; + while(ub - lb > 1) { + int mid = (lb + ub) / 2; + if(A[mid] >= k){ + ub = mid; + } + else{ + lb = mid; + } + } - - + printf("%d\n" , ub); return 0; } diff --git a/src/spear.c b/src/spear.c index 766d543..52d028c 100644 --- a/src/spear.c +++ b/src/spear.c @@ -11,7 +11,23 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000001; + int siguma; + while(ub - lb > 1) { + int mid = (lb + ub) / 2; + siguma = 0; + for(i = 0; i < n; i++){ + siguma = siguma + A[i] / mid; + } + if(siguma >= k){ + lb = mid; + } + else{ + ub = mid; + } + } - + printf("%d\n", lb); return 0; }