From d4235216f1da13ed09acdc6ccf16d106bd044f5d Mon Sep 17 00:00:00 2001 From: Hikaru Tsunekawa Date: Mon, 27 Jun 2022 20:54:03 +0900 Subject: [PATCH 1/5] revised --- src/apple.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/apple.c b/src/apple.c index 766d543..44b0631 100644 --- a/src/apple.c +++ b/src/apple.c @@ -4,6 +4,15 @@ int n; int k; int A[100000]; +int p(int index[],int mid){ + int sum = 0; + int a; + for(a=0;a 1){ + int mid = (lb + ub)/2; + //ここで評価する + if(p(A, mid) <= k){ + ub = mid; + } + else{ + lb = mid; + } + } + printf("%d\n",ub); return 0; } From 5da8e6b75cedab7f0725857687fcb40b8bdfab23 Mon Sep 17 00:00:00 2001 From: Hikaru Tsunekawa Date: Mon, 27 Jun 2022 20:56:31 +0900 Subject: [PATCH 2/5] revised --- src/array.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/array.c b/src/array.c index 13ed925..8984083 100644 --- a/src/array.c +++ b/src/array.c @@ -11,8 +11,17 @@ int main(){ for(i = 0; i < n; i++){ 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("%d\n",ub); return 0; } From 457031cb02fee928d7537645f038d32910e426ea Mon Sep 17 00:00:00 2001 From: Hikaru Tsunekawa Date: Mon, 27 Jun 2022 20:57:17 +0900 Subject: [PATCH 3/5] revised --- src/spear.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/spear.c b/src/spear.c index 766d543..afe0680 100644 --- a/src/spear.c +++ b/src/spear.c @@ -4,6 +4,15 @@ int n; int k; int A[100000]; +int p(int index[],int mid){ + int sum = 0; + int a; + for(a=0;a 1){ + int mid = (lb + ub)/2; + if(p(A, mid) < k){ + ub = mid; + } + //k以上になった時に下限を上げて終了条件 + else{ + lb = mid; + } + } + printf("%d\n",lb); return 0; } From 16e0acd3283a75918c92a8d094d1a1cb017dff14 Mon Sep 17 00:00:00 2001 From: Hikaru Tsunekawa Date: Mon, 27 Jun 2022 20:57:50 +0900 Subject: [PATCH 4/5] revised --- src/works.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/works.c b/src/works.c index 766d543..35b691a 100644 --- a/src/works.c +++ b/src/works.c @@ -4,6 +4,35 @@ int n; int k; int A[100000]; +int p(int index[],int mid){ + int sum = 0; + //人数のカウント、これとkを比較し評価 + int count = 1; + int a; + int error = 0; + for(a=0;amid){ + //midより大きい数値があったらlbを更新するようにする + a++; + count=k; + error++; + } + else{ + //オーバーしたら次のカウントへ + count++; + //リセット + a--; + sum=0; + } + } + if(error==1){ + count=count+1; + } + return count; +} int main(){ int i, lb, ub; @@ -11,7 +40,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(A, mid) <= k){ + ub = mid; + } + else{ + lb = mid; + } + } + printf("%d\n",ub); return 0; } From 0698aad1c6710146cbae6ddeaa54ba5ed8ddd637 Mon Sep 17 00:00:00 2001 From: Hikaru Tsunekawa Date: Sat, 6 Aug 2022 02:03:30 +0900 Subject: [PATCH 5/5] revised --- src/works.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/works.c b/src/works.c index 35b691a..82b6ef7 100644 --- a/src/works.c +++ b/src/works.c @@ -9,29 +9,28 @@ int p(int index[],int mid){ //人数のカウント、これとkを比較し評価 int count = 1; int a; - int error = 0; for(a=0;amid){ - //midより大きい数値があったらlbを更新するようにする - a++; - count=k; - error++; + if(mid>=index[a]){ + sum=sum+index[a]; + //仕事量がmid超えるか確認 + if(sum>mid){ + //次の人に移る + count=count+1; + //次の仕事を保存 + sum=index[a]; + } } else{ - //オーバーしたら次のカウントへ - count++; - //リセット - a--; - sum=0; + //ありえないパターン + return k+1; } } - if(error==1){ - count=count+1; + if(count>k){ + return k+1; + } + else{ + return count; } - return count; } int main(){