From 8063d7fa7f3a7219b11bec32098cd8b497168351 Mon Sep 17 00:00:00 2001 From: uta-cherry <107653412+uta-cherry@users.noreply.github.com> Date: Tue, 28 Jun 2022 11:51:59 +0900 Subject: [PATCH 1/2] Add files via upload --- src/apple.c | 23 ++++++++++++++++++++++- src/array.c | 13 +++++++++---- src/spear.c | 24 ++++++++++++++++++++++-- src/works.c | 37 +++++++++++++++++++++++++++++++++++-- 4 files changed, 88 insertions(+), 9 deletions(-) diff --git a/src/apple.c b/src/apple.c index 766d543..309ed78 100644 --- a/src/apple.c +++ b/src/apple.c @@ -4,6 +4,16 @@ int n; int k; int A[100000]; +int p(int m, int *A){ + int sum = 0; + int i; + for (i = 0; i < n; i++){ + sum += (A[i] + m -1) / m; + } + return sum <= k; +} + + int main(){ int i, lb, ub; @@ -11,7 +21,18 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - + lb = 0; + ub = 1000000000; + while ( ub - lb > 1) { + int mid = ( lb + ub ) / 2; + if( p ( mid , A )){ + ub = mid ; + } + else { + lb = mid ; + } + } + printf ( "%d\n " , ub ); return 0; } diff --git a/src/array.c b/src/array.c index 13ed925..07f06c2 100644 --- a/src/array.c +++ b/src/array.c @@ -11,8 +11,13 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - - - return 0; + lb = -1; + ub = n; + while(ub - lb > 1){ + int mid = (lb + ub) / 2; + if(A[mid] >= k) ub = mid; + else lb = mid; + } + printf("%d\n", ub); + return ub; } diff --git a/src/spear.c b/src/spear.c index 766d543..7b369b2 100644 --- a/src/spear.c +++ b/src/spear.c @@ -4,6 +4,15 @@ int n; int k; int A[100000]; +int p(int m, int *A){ + int sum = 0; + int i; + for (i = 0; i < n; i++){ + sum += A[i] / m; + } + printf("%d %d\n", m , sum); + return sum < k; +} int main(){ int i, lb, ub; @@ -11,7 +20,18 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - + lb = 0; + ub = 1000000001; + while ( ub - lb > 1) { + int mid = ( lb + ub ) / 2; + if( p ( mid , A )){ + ub = mid ; + } + else { + lb = mid ; + } + } + printf ( "%d\n " , lb ); return 0; + } diff --git a/src/works.c b/src/works.c index 766d543..13ab31b 100644 --- a/src/works.c +++ b/src/works.c @@ -4,6 +4,22 @@ int n; int k; int A[100000]; +int p(int m, int k, int *A){ + int i; + int save = m; + int p = 0; + for (i = 0; i < n; i++){ + if (m - A[i]>= 0){ + m -= A[i]; + } + else{ + m = save-A[i]; + p++; + } + } + + return p <= k; +} int main(){ int i, lb, ub; @@ -11,7 +27,24 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } - - + int max; + max = A[0]; + for (i = 0; i < n; i++) { + if (A[i] > max) { + max = A[i]; + } + } + lb = max; + ub = 1000000001; + while ( ub - lb > 1) { + int mid = ( lb + ub ) / 2; + if( p ( mid , k , A )){ + ub = mid ; + } + else { + lb = mid ; + } + } + printf ( "%d\n " , ub ); return 0; } From db64de810a44214ff53cc10efed976a18a4a6fda Mon Sep 17 00:00:00 2001 From: uta-cherry <107653412+uta-cherry@users.noreply.github.com> Date: Tue, 28 Jun 2022 11:57:51 +0900 Subject: [PATCH 2/2] Add files via upload --- src/spear.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/spear.c b/src/spear.c index 7b369b2..a961267 100644 --- a/src/spear.c +++ b/src/spear.c @@ -10,7 +10,6 @@ int p(int m, int *A){ for (i = 0; i < n; i++){ sum += A[i] / m; } - printf("%d %d\n", m , sum); return sum < k; }