From 00792bb6fd011575a1c68183073e854c9f15c6d2 Mon Sep 17 00:00:00 2001 From: Ryoto Goto Date: Tue, 28 Jun 2022 00:30:05 +0900 Subject: [PATCH 1/4] revised --- src/array.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/array.c b/src/array.c index 13ed925..61bbb92 100644 --- a/src/array.c +++ b/src/array.c @@ -11,8 +11,13 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - - + lb = -1; + ub = n; + while(ub - lb > 1){ + int mid = (ub + lb) / 2; + if(A[mid] >= k) ub = mid; + else lb = mid; + } + printf("%d\n",ub); return 0; } From 357b07898076ef0dc0fb362f822ac4509dbffd40 Mon Sep 17 00:00:00 2001 From: Ryoto Goto Date: Tue, 28 Jun 2022 00:34:16 +0900 Subject: [PATCH 2/4] revised --- src/apple.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/apple.c b/src/apple.c index 766d543..bae178e 100644 --- a/src/apple.c +++ b/src/apple.c @@ -4,6 +4,14 @@ int n; int k; int A[100000]; +int p(int x){ + int bag = 0; + for(int i = 0; i < n; i++){ + bag += (A[i] + x -1)/x; + } + return (long long int) bag <= k; +} + int main(){ int i, lb, ub; @@ -11,7 +19,17 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - + lb = 0; + ub = 100000 + 1; + while(ub - lb > 1){ + int mid = (ub + lb) / 2; + if(p(mid)){ + ub = mid; + } + else{ + lb = mid; + }; + } + printf("%d\n",ub); return 0; } From 0051b5ad14dff2cb5597adcef6b44b6d3ad6cab7 Mon Sep 17 00:00:00 2001 From: Ryoto Goto Date: Tue, 28 Jun 2022 00:35:51 +0900 Subject: [PATCH 3/4] revised --- src/spear.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/spear.c b/src/spear.c index 766d543..45eee36 100644 --- a/src/spear.c +++ b/src/spear.c @@ -4,6 +4,13 @@ int n; int k; int A[100000]; +int p(int x){ + int spear = 0; + for(int i = 0; i < n; i++){ + spear += A[i]/x; + } + return (long long int) spear >= k; +} int main(){ int i, lb, ub; @@ -11,7 +18,17 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - + lb = 0; + ub = 1000000000 + 1; + while(ub - lb > 1){ + int mid = (ub + lb) / 2; + if(p(mid)){ + lb = mid; + } /* lbはp(lb)が成り立つことがわかっている最大の数*/ + else{ + ub = mid; + };/* ubはp(ub)が成り立たないことがわかっている最小の数*/ + } + printf("%d\n",lb); return 0; } From 1a2ee14475f0fb11b7d59ed33d87a2ca640f020b Mon Sep 17 00:00:00 2001 From: Ryoto Goto Date: Tue, 28 Jun 2022 00:37:06 +0900 Subject: [PATCH 4/4] revised --- src/works.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/works.c b/src/works.c index 766d543..64999a3 100644 --- a/src/works.c +++ b/src/works.c @@ -4,7 +4,7 @@ int n; int k; int A[100000]; - +/*わかりませんでした。*/ int main(){ int i, lb, ub; scanf("%d%d", &n, &k);