diff --git a/src/apple.c b/src/apple.c index 766d543..940c20a 100644 --- a/src/apple.c +++ b/src/apple.c @@ -4,14 +4,28 @@ int n; int k; int A[100000]; - int main(){ int i, lb, ub; scanf("%d%d", &n, &k); + lb = 0; + ub = 1e9; for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - + + while(ub - lb > 1){ + int mid =(lb + ub) / 2; + int B = 0; + for(i = 0; i < n; i++){ + B = B + (A[i] + mid - 1) / mid; + } + if(B <= k){ + ub = mid; + } + else{ + lb = mid; + } + } + printf("%d\n", ub); return 0; } diff --git a/src/array.c b/src/array.c index 13ed925..46b7df7 100644 --- a/src/array.c +++ b/src/array.c @@ -8,11 +8,21 @@ int A[100000]; int main(){ int i, lb, ub; scanf("%d%d", &n, &k); + lb = -1; + ub = n; for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + 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..488959a 100644 --- a/src/spear.c +++ b/src/spear.c @@ -5,13 +5,30 @@ 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]); - } +int main() { + int i, lb, ub; + lb = 0; + ub = 1e9; + scanf("%d%d", &n, &k); + for (i = 0; i < n; i++) { + scanf("%d", &A[i]); + } + while (ub-lb>1) { + int B = 0; + int mid = (lb + ub) / 2; + for (i = 0; i < n; i++) { + B = B + A[i] / mid; + } + if (B