diff --git a/src/apple.c b/src/apple.c index 766d543..629e042 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; } 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..f3ce97b 100644 --- a/src/spear.c +++ b/src/spear.c @@ -3,15 +3,71 @@ int n; int k; int A[100000]; +int mid=0; //global変数 +int j=0; +int tree_num = 0; +int tmp=0; +int tree_judge(int m){ + for(j=0;j= m) + { + tree_num += A[j] / m; //切り上げないように + } + } + tmp=tree_num; + tree_num=0; + + //printf("mid=%d,tmp=%d\n",m,tmp); + if(tmp < k) + { + return 1; + } + else + { + return 0; + } + //printf("tree_num=%d\n",tree_num); +} -int main(){ - int i, lb, ub; + +int main(void){ + int i,max,ub,lb,sum_length = 0; scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + + for(i = 0; i < n; i++) + { scanf("%d", &A[i]); + sum_length = sum_length + A[i]; + //printf("%d\n",A[i]); + } - - + + ub = sum_length / k; + lb = 0; + + + while(ub - lb > 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); + } + if(tree_judge(mid) == 0) + { + lb = mid; + // printf("lb=%d,ub=%d\n",lb,ub); + } + if(k==0) + { + lb = 0; + } + } + //printf("%d\n",lb); + printf("%d",lb); return 0; }