From 1e54c68d7ba1645141e120b680a2fce83f5e6927 Mon Sep 17 00:00:00 2001 From: Ryu-odk Date: Tue, 28 Jun 2022 02:06:43 +0900 Subject: [PATCH 1/3] submit --- src/apple.c | 54 ++++++++++++++++++++++++++++++++++++++++++------ src/array.c | 34 ++++++++++++++++++++++++------ src/spear.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 129 insertions(+), 18 deletions(-) diff --git a/src/apple.c b/src/apple.c index 766d543..fa0bfff 100644 --- a/src/apple.c +++ b/src/apple.c @@ -3,15 +3,57 @@ int n; int k; int A[100000]; +int mid=0; //global変数 +int j=0; +int bag_num=0; + +int bag_judge(int m){ + for(j=0;j 1) + { + mid = (ub + lb)/2; + if(bag_judge(mid) == 1) + { + ub = mid; + } + else if(bag_judge(mid) == 0) + { + lb = mid; + } + printf("%d\n",lb); } - - return 0; -} +} \ No newline at end of file diff --git a/src/array.c b/src/array.c index 13ed925..22c4fc3 100644 --- a/src/array.c +++ b/src/array.c @@ -1,18 +1,40 @@ -#include +#include //配列の二分探索 int n; int k; int A[100000]; - +int mid=0; //global変数 int main(){ - int i, lb, ub; + int i,ub, lb; scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + + lb=0,ub=n; + + if(A[n-1] 1) + { + mid = (ub + lb)/2; + if(A[mid]>k) + { + ub = mid; + //printf("%d\n",mid); + } + else + { + lb = mid; + } + //printf("%d\n",mid); + } + printf("%d\n",ub); + //printf("%d,%d",lb,ub); return 0; -} +} \ No newline at end of file diff --git a/src/spear.c b/src/spear.c index 766d543..28dff10 100644 --- a/src/spear.c +++ b/src/spear.c @@ -3,15 +3,62 @@ int n; int k; int A[100000]; +int mid=0; //global変数 +int j=0; +int bag_num=0; +int tmp=0; + +int bag_judge(int m){ + for(j=0;j 1) + { + mid = (ub + lb)/2; + if(bag_judge(mid) == 1) + { + ub = mid; + } + else if(bag_judge(mid) == 0) + { + lb = mid; + } + } + printf("%d",ub); return 0; -} +} \ No newline at end of file From 3294485c1ef72e6c37ef60ad729626fdf169f881 Mon Sep 17 00:00:00 2001 From: Ryu-odk <107900033+Ryu-odk@users.noreply.github.com> Date: Tue, 28 Jun 2022 02:37:17 +0900 Subject: [PATCH 2/3] Update apple.c --- src/apple.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apple.c b/src/apple.c index fa0bfff..629e042 100644 --- a/src/apple.c +++ b/src/apple.c @@ -53,7 +53,7 @@ int main(void){ { lb = mid; } + printf("%d\n",lb); - } return 0; -} \ No newline at end of file +} From 89bdfd50fdfcbeac24379fabbbe145e7a38becc5 Mon Sep 17 00:00:00 2001 From: Ryu-odk <107900033+Ryu-odk@users.noreply.github.com> Date: Tue, 28 Jun 2022 02:40:03 +0900 Subject: [PATCH 3/3] Update spear.c --- src/spear.c | 55 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/src/spear.c b/src/spear.c index 28dff10..f3ce97b 100644 --- a/src/spear.c +++ b/src/spear.c @@ -5,60 +5,69 @@ int k; int A[100000]; int mid=0; //global変数 int j=0; -int bag_num=0; +int tree_num = 0; int tmp=0; -int bag_judge(int m){ +int tree_judge(int m){ for(j=0;j= m) + { + tree_num += A[j] / m; //切り上げないように + } } + tmp=tree_num; + tree_num=0; - tmp=bag_num; - bag_num=0; - //printf("%d\n",tmp); - - if(tmp <= k) + //printf("mid=%d,tmp=%d\n",m,tmp); + if(tmp < k) { - return 1; + return 1; } else { - return 0; + return 0; } + //printf("tree_num=%d\n",tree_num); } int main(void){ - int i,max,ub,lb; + int i,max,ub,lb,sum_length = 0; scanf("%d%d", &n, &k); for(i = 0; i < n; i++) { scanf("%d", &A[i]); - if(max < A[i]) - { - max = A[i]; - ub = A[i]; - } + sum_length = sum_length + A[i]; + //printf("%d\n",A[i]); + } - lb = 0; //maxは上で定義してある + ub = sum_length / k; + lb = 0; while(ub - lb > 1) { - mid = (ub + lb)/2; - if(bag_judge(mid) == 1) + mid = (ub + lb) / 2; + //printf("mid=%d\n",mid); + if(tree_judge(mid) == 1) { ub = mid; + //printf("lb=%d,ub=%d\n",lb,ub); } - else if(bag_judge(mid) == 0) + if(tree_judge(mid) == 0) { lb = mid; + // printf("lb=%d,ub=%d\n",lb,ub); + } + if(k==0) + { + lb = 0; } } - printf("%d",ub); + //printf("%d\n",lb); + printf("%d",lb); return 0; -} \ No newline at end of file +}