From ea174c05a1127d0ecf89c7de5f85022cccf79a31 Mon Sep 17 00:00:00 2001 From: Minami Hayashi Date: Tue, 28 Jun 2022 05:11:20 +0900 Subject: [PATCH 1/8] revised --- src/apple.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/apple.c b/src/apple.c index 766d543..5b29c6e 100644 --- a/src/apple.c +++ b/src/apple.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 (l == r) return r; + if (x > A[r]) return r+1; + 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; @@ -12,6 +20,8 @@ int main(){ scanf("%d", &A[i]); } - - return 0; + lb = 0; + ub = n - 1; + printf("%u", binary_search(A, k, lb, ub)); + return 0; } From b4c8cfc90f8054f8acf8483ac09f46b4e85c6993 Mon Sep 17 00:00:00 2001 From: Minami Hayashi Date: Tue, 28 Jun 2022 05:16:39 +0900 Subject: [PATCH 2/8] revised --- src/array.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/array.c b/src/array.c index 13ed925..c45ded7 100644 --- a/src/array.c +++ b/src/array.c @@ -12,7 +12,19 @@ int main(){ scanf("%d", &A[i]); } - + lb = -1; + ub = n; + while (ub - lb > 1){ + int mid = (lb + ub) / 2; + if(A[mid] < k) {lb = mid; + + } + else {ub = mid; + + } + } + printf("%d", ub); + return 0; } From c3ab01565db478bc138fdda6ad0ccdb6fa21343f Mon Sep 17 00:00:00 2001 From: Minami Hayashi Date: Tue, 28 Jun 2022 05:25:15 +0900 Subject: [PATCH 3/8] revised --- src/spear.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/spear.c b/src/spear.c index 766d543..2cef51c 100644 --- a/src/spear.c +++ b/src/spear.c @@ -4,6 +4,16 @@ int n; int k; int A[100000]; +int p(int x){ + int n = 0||1; + int i; + int m; + for (i = 0; i < m; i++){ + n = n + (A[i] + x - 1); +} + + return k<= x; +} int main(){ int i, lb, ub; @@ -12,6 +22,17 @@ int main(){ scanf("%d", &A[i]); } + lb = 0; + ub = A[i] + 1; + while (ub -lb > 1) { + int mid = (ub + lb) / 2; + if (p(mid)){lb = mid; + + } + else {ub = mid; + + } + } return 0; } From 7d32c02da39a656f4fe886bcd4f95b3d693f33e1 Mon Sep 17 00:00:00 2001 From: Minami Hayashi Date: Tue, 28 Jun 2022 05:30:38 +0900 Subject: [PATCH 4/8] revised --- src/works.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/works.c b/src/works.c index 766d543..1def32b 100644 --- a/src/works.c +++ b/src/works.c @@ -4,6 +4,22 @@ int n; int k; int A[100000]; +int p(int x){ + int sum = 1,p = 0, m = 1; + for(int m=0; m < n; m++) + if(p + A[m]<=x){p = p + x; + + } + else if(x < A[m]){m = 0; + + } + else {p = A[m]; + sum++; + + } + +return sum<=k && m ; +} int main(){ int i, lb, ub; From 605e8eb2fcb3f0850b73ab32b83db885ace26791 Mon Sep 17 00:00:00 2001 From: mina1102 <107454670+mina1102@users.noreply.github.com> Date: Sat, 9 Jul 2022 04:54:36 +0900 Subject: [PATCH 5/8] Add files via upload --- src/apple.c | 27 +++++++------- src/spear.c | 102 ++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 85 insertions(+), 44 deletions(-) diff --git a/src/apple.c b/src/apple.c index 5b29c6e..7c2dc66 100644 --- a/src/apple.c +++ b/src/apple.c @@ -1,21 +1,22 @@ #include -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 (l == r) return r; - if (x > A[r]) return r+1; +int binary_search(int a[], int x, int l, int r){ + int m; m = (l + r) / 2; - if (A[m] >= x) return binary_search(A, x, l,m); - else return binary_search(A, x, m + 1, r); + if (a[m]==x) + return m; + else if (l>r) + return m+1; + else if (a[m] - -int n; -int k; -int A[100000]; - -int p(int x){ - int n = 0||1; - int i; - int m; - for (i = 0; i < m; i++){ - n = n + (A[i] + x - 1); -} - - return k<= x; +int hanbetsu(int l,int r,int k,int a[],int n){ + int i,j,ans,sum; + ans = 0; + for (i=r;i>=l;i--){ + sum = 0; + if (ans>0){ + break; + } + for (j=0;j=1){ + sum += a[n-1-j]/i; + if (sum>=k){ + ans = i; + break; + } + } + else + break; + } + } + return ans; } int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ - scanf("%d", &A[i]); - } - - lb = 0; - ub = A[i] + 1; - while (ub -lb > 1) { - int mid = (ub + lb) / 2; - if (p(mid)){lb = mid; - - } - else {ub = mid; - + int n,k,A[100000],i,j,tmp,ans,sum,T,add; + scanf("%d %d",&n,&k); + for (i=0;i A[j]) { + tmp = A[i]; + A[i] = A[j]; + A[j] = tmp; } + } + } + + T=-1; + for (i=n-1;i>=0;i--){ + sum = 0; + if (T<0){ + for (j=n-1;j>=0;j--){ + if (A[j]/A[i]>=1){ + sum += A[j]/A[i]; + if (sum>=k){ + T=i; + break; + } + } + else + break; } + } + else + break; + } + add = 0; + for (i=0;i Date: Wed, 13 Jul 2022 17:10:36 +0900 Subject: [PATCH 6/8] Add files via upload --- src/works.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/works.c b/src/works.c index 1def32b..bf540aa 100644 --- a/src/works.c +++ b/src/works.c @@ -6,19 +6,21 @@ int A[100000]; int p(int x){ int sum = 1,p = 0, m = 1; - for(int m=0; m < n; m++) - if(p + A[m]<=x){p = p + x; + for(int i=0; i < n; i++) + if(x < A[i]){ + return 0; } - else if(x < A[m]){m = 0; + else if(m + A[i]<= x){ + m = m + A[i]; } - else {p = A[m]; - sum++; + else { + m = A[i]; + sum++; } -return sum<=k && m ; } int main(){ @@ -27,6 +29,17 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000; + while (ub - lb > 1){ + int mid = (ub + lb) / 2; + if (p(mid)){ + ub = mid; + } + else{ + lb = mid; + } + } return 0; From 536a2846349e7015494052dee10aa32219ea69e4 Mon Sep 17 00:00:00 2001 From: mina1102 <107454670+mina1102@users.noreply.github.com> Date: Sat, 23 Jul 2022 01:25:33 +0900 Subject: [PATCH 7/8] Add files via upload --- src/apple.c | 30 ++++++++-------- src/spear.c | 98 ++++++++++++++--------------------------------------- src/works.c | 33 ++++-------------- 3 files changed, 47 insertions(+), 114 deletions(-) diff --git a/src/apple.c b/src/apple.c index 7c2dc66..7197412 100644 --- a/src/apple.c +++ b/src/apple.c @@ -1,22 +1,21 @@ #include -int binary_search(int a[], int x, int l, int r){ - int m; +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 (l == r) return r; + if (x > A[r]) return r+1; m = (l + r) / 2; - if (a[m]==x) - return m; - else if (l>r) - return m+1; - else 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,n,k; - scanf("%d %d", &n, &k); - int A[100000]; + int i, lb, ub; + scanf("%d%d", &n, &k); for(i = 0; i < n; i++){ scanf("%d", &A[i]); } @@ -24,5 +23,6 @@ int main(){ lb = 0; ub = n - 1; printf("%u", binary_search(A, k, lb, ub)); - return 0; -} \ No newline at end of file + + return 0; +} diff --git a/src/spear.c b/src/spear.c index de581ca..8e7294e 100644 --- a/src/spear.c +++ b/src/spear.c @@ -1,78 +1,32 @@ #include -int hanbetsu(int l,int r,int k,int a[],int n){ - int i,j,ans,sum; - ans = 0; - for (i=r;i>=l;i--){ - sum = 0; - if (ans>0){ - break; - } - for (j=0;j=1){ - sum += a[n-1-j]/i; - if (sum>=k){ - ans = i; - break; - } - } - else - break; - } - } - return ans; + +int n; +int k; +int A[100000]; + +int p(int x){ + int n = 0,1; + for (i = 0; i < m; i++){ + n = n + (A[i] + x - 1;) +} + + return k=< x } int main(){ - int n,k,A[100000],i,j,tmp,ans,sum,T,add; - scanf("%d %d",&n,&k); - for (i=0;i A[j]) { - tmp = A[i]; - A[i] = A[j]; - A[j] = tmp; - } - } - } - - T=-1; - for (i=n-1;i>=0;i--){ - sum = 0; - if (T<0){ - for (j=n-1;j>=0;j--){ - if (A[j]/A[i]>=1){ - sum += A[j]/A[i]; - if (sum>=k){ - T=i; - break; - } - } - else - break; - } + int i, lb, ub; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ + scanf("%d", &A[i]); + } + +lb = 0; +ub = [A] + 1 + while (ub -lb > 1) { + int mid = (ub + lb) / 2; + if (p(mid)){lb = mid}; + else {ub = mid;} } - else - break; - } - add = 0; - for (i=0;i 1){ - int mid = (ub + lb) / 2; - if (p(mid)){ - ub = mid; - } - else{ - lb = mid; - } - } return 0; From c21b0c806aa22ec9be91b16b0e77476caf7c6303 Mon Sep 17 00:00:00 2001 From: mina1102 <107454670+mina1102@users.noreply.github.com> Date: Fri, 5 Aug 2022 20:59:04 +0900 Subject: [PATCH 8/8] Add files via upload --- src/apple.c | 34 +++++++++++++++++++++------------- src/spear.c | 43 ++++++++++++++++++++++++------------------- src/works.c | 36 +++++++++++++++++++++++++++--------- 3 files changed, 72 insertions(+), 41 deletions(-) diff --git a/src/apple.c b/src/apple.c index 7197412..d94878d 100644 --- a/src/apple.c +++ b/src/apple.c @@ -1,17 +1,16 @@ #include - 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 (l == r) return r; - if (x > A[r]) return r+1; - 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 p(int m){ + unsigned int i, s; + s = 0; + for(i = 0; i < n; i++){ + s = s + A[i] /m; + } + return s < k; +} int main(){ int i, lb, ub; @@ -20,9 +19,18 @@ int main(){ scanf("%d", &A[i]); } - lb = 0; - ub = n - 1; - printf("%u", binary_search(A, k, lb, ub)); + lb = 0; + ub = 1000000000; + while(ub - lb > 1){ + int mid = (lb + ub) / 2; + if(p(mid)){ + ub = mid; + } + else{ + lb = mid; + } + } + printf("%d\n", ub); return 0; -} +} \ No newline at end of file diff --git a/src/spear.c b/src/spear.c index 8e7294e..44399f0 100644 --- a/src/spear.c +++ b/src/spear.c @@ -1,32 +1,37 @@ #include - int n; int k; int A[100000]; int p(int x){ - int n = 0,1; - for (i = 0; i < m; i++){ - n = n + (A[i] + x - 1;) + int s = 0; + for(int i = 0; i < n; i++){ + s = s + A[i] / x; } - - return k=< x +return (int) s < k; } -int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ - scanf("%d", &A[i]); - } + int main(){ + int i, lb, ub; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ + scanf("%d", &A[i]); + } + -lb = 0; -ub = [A] + 1 - while (ub -lb > 1) { + lb = 0; + ub = 1000000000; + while (ub - lb > 1){ int mid = (ub + lb) / 2; - if (p(mid)){lb = mid}; - else {ub = mid;} + if(p(mid)){ + ub = mid; } + else{ + lb = mid; + } + } - return 0; -} + printf("%d",lb); + + return 0; +} \ No newline at end of file diff --git a/src/works.c b/src/works.c index fd1872e..4600a95 100644 --- a/src/works.c +++ b/src/works.c @@ -1,17 +1,24 @@ #include - int n; int k; int A[100000]; -int p(int x){ - int sum = 1, p = 0, m = 1; - for(int m=0; m < n; m++) - if(p z + a[m]<=x){p = p + x} - else if(x < A[m]){m = 0;} - else {p = A[m], sum++} +int p(int m){ + int k_need = 1; + int sum = 0; + for(int i = 0; i < n; i++){ + if(A[i] > m){ + return 0; + }else if(sum + A[i] <= m){ + sum = sum + A[i]; + }else{ + k_need++; + sum = A[i]; + } + } + return k_need <= k; } - return sum<=k && m + int main(){ int i, lb, ub; @@ -19,7 +26,18 @@ int main(){ for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + lb = 0; + ub = 1000000000; + while(ub - lb > 1){ + int mid = (ub + lb) / 2; + if(p(mid)){ + ub = mid; + }else{ + lb = mid; + } + } + printf("%d", ub); return 0; -} +} \ No newline at end of file