diff --git a/src/apple.c b/src/apple.c index 766d543..23d1c66 100644 --- a/src/apple.c +++ b/src/apple.c @@ -1,17 +1,84 @@ #include +#include int n; int k; int A[100000]; +bool p(int x); +void Num_printing(int i); -int main(){ - int i, lb, ub; +int main() +{ + int i, lb = 0, ub = 0; + printf("Enter n and k:\n"); scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + printf("Check the value:n=%d, k=%d\n", n, k); + for (i = 0; i < n; ++i) + { + Num_printing(i + 1); scanf("%d", &A[i]); + if (ub < A[i]) + { + ub = A[i]; + } } + while (ub - lb > 1) + { + int mid = (lb + ub) / 2; + // printf("x=%d\n", mid); + if (p(mid)) + { + // printf("t\n"); + ub = mid; + } + else + { + // printf("f\n"); + lb = mid; + } + } + printf("Output Number:%d\n", ub); return 0; } + +bool p(int x) +{ + unsigned int count = 0; + for (int i = 0; i < n; i++) + { + count += (A[i] + x - 1) / x; + // printf("%d\n", count); + } + if (count <= k) + { + return true; + } + else + { + return false; + } +} + +// 表示をきれいにするためのプログラム +void Num_printing(int i) +{ + if (i % 10 == 1) + { + printf("Enter the array value(%d st):\n", i); + } + else if (i % 10 == 2) + { + printf("Enter the array value(%d nd):\n", i); + } + else if (i % 10 == 3) + { + printf("Enter the array value(%d rd):\n", i); + } + else + { + printf("Enter the array value(%d th):\n", i); + } +} \ No newline at end of file diff --git a/src/array.c b/src/array.c index 13ed925..9744302 100644 --- a/src/array.c +++ b/src/array.c @@ -4,15 +4,58 @@ int n; int k; int A[100000]; +void Num_printing(int i); -int main(){ +int main() +{ int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + printf("Enter n and k:\n"); + scanf("%d %d", &n, &k); + printf("Check the value:n=%d, k=%d\n", n, k); + for (i = 0; i < n; i++) + { + Num_printing(i + 1); scanf("%d", &A[i]); } + lb = -1; + ub = n; + while (ub - lb > 1) + { + int mid = (lb + ub) / 2; + if (A[mid] >= k) + { + ub = mid; + } + else + { + lb = mid; + } + } + + printf("Output Number:%d\n", ub); return 0; } + +// 表示をきれいにするためのプログラム +void Num_printing(int i) +{ + if (i % 10 == 1) + { + printf("Enter the array value(%d st):\n", i); + } + else if (i % 10 == 2) + { + printf("Enter the array value(%d nd):\n", i); + } + else if (i % 10 == 3) + { + printf("Enter the array value(%d rd):\n", i); + } + else + { + printf("Enter the array value(%d th):\n", i); + } +} \ No newline at end of file diff --git a/src/spear.c b/src/spear.c index 766d543..ca93989 100644 --- a/src/spear.c +++ b/src/spear.c @@ -1,17 +1,84 @@ #include +#include int n; int k; int A[100000]; +bool p(int x); +void Num_printing(int i); -int main(){ - int i, lb, ub; +int main() +{ + int i, lb = 0, ub = 0; + // printf("Enter n and k:\n"); scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + // printf("Check the value:n=%d, k=%d\n", n, k); + for (i = 0; i < n; ++i) + { + //Num_printing(i + 1); scanf("%d", &A[i]); + if (ub < A[i]) + { + ub = A[i] + 1; + } } + while (ub - lb > 1) + { + int mid = (lb + ub) / 2; + // printf("x=%d\n", mid); + if (p(mid)) + { + // printf("t\n"); + lb = mid; + } + else + { + // printf("f\n"); + ub = mid; + } + } + printf("%d\n", lb); return 0; } + +bool p(int x) +{ + unsigned int count = 0; + for (int i = 0; i < n; i++) + { + count += A[i] / x; + // printf("%d\n", count); + } + if (count < k) + { + return false; + } + else + { + return true; + } +} + +// 表示をきれいにするためのプログラム +void Num_printing(int i) +{ + if (i % 10 == 1) + { + printf("Enter the array value(%d st):\n", i); + } + else if (i % 10 == 2) + { + printf("Enter the array value(%d nd):\n", i); + } + else if (i % 10 == 3) + { + printf("Enter the array value(%d rd):\n", i); + } + else + { + printf("Enter the array value(%d th):\n", i); + } +} \ No newline at end of file diff --git a/src/works.c b/src/works.c index 766d543..59688ad 100644 --- a/src/works.c +++ b/src/works.c @@ -1,17 +1,101 @@ #include +#include int n; int k; int A[100000]; +bool p(int x); +void Num_printing(int i); -int main(){ - int i, lb, ub; +int main() +{ + int i, lb = 0, ub = 0; + // printf("Enter n and k:\n"); scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + // printf("Check the value:n=%d, k=%d\n", n, k); + for (i = 0; i < n; ++i) + { + // Num_printing(i + 1); scanf("%d", &A[i]); + ub += A[i]; } + while (ub - lb > 1) + { + int mid = (lb + ub) / 2; + // printf("x=%d\n", mid); + if (p(mid)) + { + // printf("t\n"); + ub = mid; + } + else + { + // printf("f\n"); + lb = mid; + } + } + printf("%d\n", ub); return 0; } + +bool p(int x) +{ + int temp = 0, i = 0, count = 0; + while (1) + { + temp = x; + ++count; + if (x < A[i]) + { + // printf("big false\n"); + return false; + } + if (i >= n - 1) + { + break; + } + while (1) + { + temp -= A[i]; + // printf("roop1(temp=%d,i=%d,count=%d)\n", temp, i, count); + ++i; + if (i >= n || temp < A[i]) + { + break; + } + } + // printf("roop2(count=%d,i=%d)\n", count, i); + } + if (count > k) + { + return false; + } + else + { + return true; + } +} + +// 表示をきれいにするためのプログラム +void Num_printing(int i) +{ + if (i % 10 == 1) + { + printf("Enter the array value(%d st):\n", i); + } + else if (i % 10 == 2) + { + printf("Enter the array value(%d nd):\n", i); + } + else if (i % 10 == 3) + { + printf("Enter the array value(%d rd):\n", i); + } + else + { + printf("Enter the array value(%d th):\n", i); + } +} \ No newline at end of file