From fdff2013364c8bbae78432d347aa6441006d0f5d Mon Sep 17 00:00:00 2001 From: Kosuke Otsuru Date: Mon, 27 Jun 2022 12:04:21 +0900 Subject: [PATCH 01/10] reviced --- src/array.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/array.c b/src/array.c index 13ed925..e531f18 100644 --- a/src/array.c +++ b/src/array.c @@ -4,6 +4,14 @@ int n; int k; int A[100000]; +unsigned int binary_search(int A[], int x, unsigned int l, unsigned int r){ + unsigned int m; + if(x > A[r]) return r+1; + if(l == r) return r; + m = (l + r)/2; + if(A[m] >= x) return binary_search(A, x, l, m); + else return binary_search(A, x, m+1, r); +} int main(){ int i, lb, ub; @@ -11,8 +19,8 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - - + lb = 0; + ub = n-1; + printf("%u", binary_search(A, k, lb, ub)); return 0; } From 905d2b2ffdeeafc1141dc0502d3d6f245ad384ed Mon Sep 17 00:00:00 2001 From: Kosuke Otsuru Date: Mon, 27 Jun 2022 12:06:42 +0900 Subject: [PATCH 02/10] reviced --- src/apple.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/apple.c b/src/apple.c index 766d543..28ad6be 100644 --- a/src/apple.c +++ b/src/apple.c @@ -4,6 +4,20 @@ int n; int k; int A[100000]; +int ringo(int A[], int n, int k, int x){ + int i, count = 0, nokori; + for(i=0; i0){ + nokori-=x; + count++; + } + } + if(count > k) return 0; + return 1; +} + int main(){ int i, lb, ub; @@ -12,6 +26,19 @@ int main(){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000000; + while(ub - lb > 1){ + int mid = (lb + ub)/2; + if(ringo(A, n, k, mid)){ + ub = mid; + } + else{ + lb = mid; + } + } + + printf("%u", ub); return 0; } From b736e949bee5a58d5f6e5e24dc7da23fb3d78293 Mon Sep 17 00:00:00 2001 From: Kosuke Otsuru Date: Mon, 27 Jun 2022 12:07:11 +0900 Subject: [PATCH 03/10] reviced --- src/spear.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/spear.c b/src/spear.c index 766d543..0007bf2 100644 --- a/src/spear.c +++ b/src/spear.c @@ -4,6 +4,18 @@ int n; int k; int A[100000]; +int spear(int A[], int n, int k, int x){ + int i, count = 0, nokori; + for(i=0; i= 0){ + nokori-=x; + count++; + } + } + if(count >= k) return 0; + return 1; +} int main(){ int i, lb, ub; @@ -12,6 +24,19 @@ int main(){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000000; + while(ub - lb > 1){ + int mid = (lb + ub)/2; + if(spear(A, n, k, mid)){ + ub = mid; + } + else{ + lb = mid; + } + } + + printf("%u", lb); return 0; } From 0219f9dbc9748001904fe6b53a92060e82247e6d Mon Sep 17 00:00:00 2001 From: Kosuke Otsuru Date: Mon, 27 Jun 2022 12:07:42 +0900 Subject: [PATCH 04/10] reviced --- src/works.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/works.c b/src/works.c index 766d543..782b660 100644 --- a/src/works.c +++ b/src/works.c @@ -4,6 +4,22 @@ int n; int k; int A[100000]; +int work(int A[], int n, int k, int x){ + int i=0, count=0, timesum=0; + while(i x) return 0; + else{ + if(x - timesum >= A[i]){ + timesum+=A[i]; + count++; + i++; + } + else timesum = 0; + } + } + if(count >= k) return 1; + return 0; +} int main(){ int i, lb, ub; @@ -12,6 +28,19 @@ int main(){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000; + while(ub - lb > 1){ + int mid = (lb + ub)/2; + if(work(A, n, k, mid)){ + ub = mid; + } + else{ + lb = mid; + } + } + + printf("%u", ub); return 0; } From cccba41ed876864a907641fba86b2d98a479782e Mon Sep 17 00:00:00 2001 From: tsu-ru <94231841+tsuuuru@users.noreply.github.com> Date: Mon, 27 Jun 2022 15:04:37 +0900 Subject: [PATCH 05/10] Update works.c --- src/works.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/works.c b/src/works.c index 782b660..913774d 100644 --- a/src/works.c +++ b/src/works.c @@ -11,14 +11,15 @@ int work(int A[], int n, int k, int x){ else{ if(x - timesum >= A[i]){ timesum+=A[i]; - count++; i++; } - else timesum = 0; + else{ + timesum = 0; + count++; } } - if(count >= k) return 1; - return 0; + if(count >= k) return 0; + return 1; } int main(){ From a5d07693a8de6aa09889692506a4b4891d72aae0 Mon Sep 17 00:00:00 2001 From: tsu-ru <94231841+tsuuuru@users.noreply.github.com> Date: Mon, 27 Jun 2022 15:05:23 +0900 Subject: [PATCH 06/10] Update works.c --- src/works.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/works.c b/src/works.c index 913774d..64f4e7c 100644 --- a/src/works.c +++ b/src/works.c @@ -16,6 +16,7 @@ int work(int A[], int n, int k, int x){ else{ timesum = 0; count++; + } } } if(count >= k) return 0; From 52c4a65630db69e891d268522ea52a14cce83f6d Mon Sep 17 00:00:00 2001 From: tsu-ru <94231841+tsuuuru@users.noreply.github.com> Date: Sun, 3 Jul 2022 22:52:24 +0900 Subject: [PATCH 07/10] Update array.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 再提出しました。 よろしくお願いします。 --- src/array.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/array.c b/src/array.c index e531f18..5d39b98 100644 --- a/src/array.c +++ b/src/array.c @@ -4,23 +4,19 @@ int n; int k; int A[100000]; -unsigned int binary_search(int A[], int x, unsigned int l, unsigned int r){ - unsigned int m; - if(x > A[r]) return r+1; - if(l == r) return r; - m = (l + r)/2; - if(A[m] >= x) return binary_search(A, x, l, m); - else return binary_search(A, x, m+1, r); -} - int main(){ int i, lb, ub; scanf("%d%d", &n, &k); for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - lb = 0; - ub = n-1; - printf("%u", binary_search(A, k, lb, ub)); + lb = -1; + ub = n; + while(ub - lb > 1){ + int mid = (lb + ub)/2; + if(A[mid] > k) ub = mid; + else lb = mid; + } + printf("%u", ub); return 0; } From 94103d78ea1df6e38110fd5a330187c23cb1204d Mon Sep 17 00:00:00 2001 From: tsu-ru <94231841+tsuuuru@users.noreply.github.com> Date: Sun, 3 Jul 2022 22:57:46 +0900 Subject: [PATCH 08/10] Update works.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正しました。関数を新たに追加しました。よろしくお願いします。 --- src/works.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/works.c b/src/works.c index 64f4e7c..1679b20 100644 --- a/src/works.c +++ b/src/works.c @@ -4,6 +4,12 @@ int n; int k; int A[100000]; +int worktimesum(int A[], int n){ + int i, sum=0; + for(i=0; i 1){ int mid = (lb + ub)/2; if(work(A, n, k, mid)){ From cfb644cae63171bcb66d6c7f6e33f213b99d1489 Mon Sep 17 00:00:00 2001 From: tsu-ru <94231841+tsuuuru@users.noreply.github.com> Date: Sun, 3 Jul 2022 22:59:24 +0900 Subject: [PATCH 09/10] Update spear.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit こちらも初期値を修正しました。よろしくお願いします。 --- src/spear.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spear.c b/src/spear.c index 0007bf2..3962aae 100644 --- a/src/spear.c +++ b/src/spear.c @@ -25,7 +25,7 @@ int main(){ } lb = 0; - ub = 1000000000; + ub = 1000000001; while(ub - lb > 1){ int mid = (lb + ub)/2; if(spear(A, n, k, mid)){ From 03b70b27896e73bbb71cb0933e5a29b852ade638 Mon Sep 17 00:00:00 2001 From: tsu-ru <94231841+tsuuuru@users.noreply.github.com> Date: Tue, 9 Aug 2022 04:06:59 +0900 Subject: [PATCH 10/10] Update array.c --- src/array.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/array.c b/src/array.c index 5d39b98..ffe7a26 100644 --- a/src/array.c +++ b/src/array.c @@ -14,7 +14,7 @@ int main(){ ub = n; while(ub - lb > 1){ int mid = (lb + ub)/2; - if(A[mid] > k) ub = mid; + if(A[mid] >= k) ub = mid; else lb = mid; } printf("%u", ub);