diff --git a/src/apple.c b/src/apple.c index 766d543..130ce3b 100644 --- a/src/apple.c +++ b/src/apple.c @@ -1,17 +1,44 @@ + #include int n; int k; int A[100000]; +unsigned int check(int x){ + int res = 0; + for (int t=0;t 1){ + int mid = (lb + ub ) / 2; + if (check(mid)) ub = mid ; + else lb = mid ; + +} +return ub ; +} int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=0; + ub=1000000000; + + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } diff --git a/src/array.c b/src/array.c index 13ed925..dff0b98 100644 --- a/src/array.c +++ b/src/array.c @@ -1,18 +1,35 @@ + #include int n; int k; int A[100000]; +unsigned int binary_search (int lb, int ub, int k){ + while (ub - lb > 1){ + int mid = (lb + ub ) / 2; + if (A[ mid ] >= k) ub = mid ; + else lb = mid ; + } +return ub ; +} int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=-1; + ub=n+1; + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } diff --git a/src/spear.c b/src/spear.c index 766d543..76683a9 100644 --- a/src/spear.c +++ b/src/spear.c @@ -1,17 +1,44 @@ + #include int n; int k; int A[100000]; +unsigned int number_of_spear(int x){ + int res = 0; + for (int t=0;t 1){ + int mid = (lb + ub ) / 2; + if (number_of_spear(mid) >= k) lb = mid ; + else ub = mid ; + } + return lb ; // 少し変更 +} + int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=-1; + ub=1000000001; + + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } diff --git a/src/works.c b/src/works.c index 766d543..1a75595 100644 --- a/src/works.c +++ b/src/works.c @@ -1,17 +1,51 @@ + #include int n; int k; int A[100000]; +int check(int x){ + int tmp=0, count=1; + for(int t=0;t x){ + t--; + tmp=0; + count++; + } + if(count > k)return 0; + } + return 1; +} + +unsigned int binary_search (int lb, int ub, int k){ + while (ub - lb > 1){ + int mid = (lb + ub ) / 2; + if (check(mid)) ub = mid ; + else lb = mid ; + +} + return ub ; +} + int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=0; + ub=1000000000; + + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; }