From ba7c763dc1b3ee3cef9092aa07f43158ceef4eae Mon Sep 17 00:00:00 2001 From: Takumi_Hirose Date: Mon, 27 Jun 2022 22:46:58 +0900 Subject: [PATCH 1/7] finish array --- src/.vscode/tasks.json | 28 ++++++++++++++++++++++++++++ src/apple.c | 3 ++- src/array.c | 24 ++++++++++++++++++------ 3 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 src/.vscode/tasks.json diff --git a/src/.vscode/tasks.json b/src/.vscode/tasks.json new file mode 100644 index 0000000..1d6ff70 --- /dev/null +++ b/src/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc-11 build active file", + "command": "/opt/homebrew/bin/gcc-11", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/src/apple.c b/src/apple.c index 766d543..44b8996 100644 --- a/src/apple.c +++ b/src/apple.c @@ -5,8 +5,9 @@ int k; int A[100000]; + int main(){ - int i, lb, ub; + int i, lb=0, ub=n; scanf("%d%d", &n, &k); for(i = 0; i < n; i++){ scanf("%d", &A[i]); diff --git a/src/array.c b/src/array.c index 13ed925..3064d84 100644 --- a/src/array.c +++ b/src/array.c @@ -1,18 +1,30 @@ + #include int n; int k; int A[100000]; +unsigned int binary_search (int lb, int ub, int k){ +while (ub - lb > 1){ +int mid = (lb + ub ) / 2; +if (A[ mid ] >= k) ub = mid ; +else lb = mid ; +} +return ub ; +} int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb=0; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } - + } + ub=n; + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } From 8f18abcd8ba9d610e74087bc873e1b85ce5c3fc4 Mon Sep 17 00:00:00 2001 From: Takumi_Hirose Date: Mon, 27 Jun 2022 23:06:14 +0900 Subject: [PATCH 2/7] finish apple --- src/.vscode/tasks.json | 28 ---------------------------- src/apple.c | 38 +++++++++++++++++++++++++++++++++----- src/array.c | 7 ++++++- src/spear.c | 30 +++++++++++++++++++++++++----- 4 files changed, 64 insertions(+), 39 deletions(-) delete mode 100644 src/.vscode/tasks.json diff --git a/src/.vscode/tasks.json b/src/.vscode/tasks.json deleted file mode 100644 index 1d6ff70..0000000 --- a/src/.vscode/tasks.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "tasks": [ - { - "type": "cppbuild", - "label": "C/C++: gcc-11 build active file", - "command": "/opt/homebrew/bin/gcc-11", - "args": [ - "-fdiagnostics-color=always", - "-g", - "${file}", - "-o", - "${fileDirname}/${fileBasenameNoExtension}" - ], - "options": { - "cwd": "${fileDirname}" - }, - "problemMatcher": [ - "$gcc" - ], - "group": { - "kind": "build", - "isDefault": true - }, - "detail": "Task generated by Debugger." - } - ], - "version": "2.0.0" -} \ No newline at end of file diff --git a/src/apple.c b/src/apple.c index 44b8996..4b43b6c 100644 --- a/src/apple.c +++ b/src/apple.c @@ -1,18 +1,46 @@ + #include int n; int k; int A[100000]; +unsigned int number_of_bag(int x){ + int res = 0; + for (int t=0;t 1){ + int mid = (lb + ub ) / 2; + if (number_of_bag(mid) <= k) ub = mid ; + else lb = mid ; + +} + + +return ub ; +} int main(){ - int i, lb=0, ub=n; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=0; + ub=1000000000; + + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } diff --git a/src/array.c b/src/array.c index 3064d84..4f70689 100644 --- a/src/array.c +++ b/src/array.c @@ -15,12 +15,17 @@ return ub ; } int main(){ - int i, ub, lb=0; + int i, ub, lb; scanf("%d%d", &n, &k); for(i = 0; i < n; i++){ scanf("%d", &A[i]); } + + + lb=0; ub=n; + + int res=0; res = binary_search(lb, ub, k); printf("%d\n", res); diff --git a/src/spear.c b/src/spear.c index 766d543..eb2dd23 100644 --- a/src/spear.c +++ b/src/spear.c @@ -1,3 +1,4 @@ + #include int n; @@ -5,13 +6,32 @@ int k; int A[100000]; +unsigned int binary_search (int lb, int ub, int k){ +while (ub - lb > 1){ +int mid = (lb + ub ) / 2; +if (A[ mid ] >= k) ub = mid ; +else lb = mid ; +} +return ub ; +} + + int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=0; + ub=1000000000; + + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } From 6806302f9f2db7fa5d7d25e86061309b2087976b Mon Sep 17 00:00:00 2001 From: Takumi_Hirose Date: Mon, 27 Jun 2022 23:12:28 +0900 Subject: [PATCH 3/7] finish spear --- src/spear.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/spear.c b/src/spear.c index eb2dd23..55afbea 100644 --- a/src/spear.c +++ b/src/spear.c @@ -5,14 +5,21 @@ int n; int k; int A[100000]; +unsigned int number_of_spear(int x){ + int res = 0; + for (int t=0;t 1){ -int mid = (lb + ub ) / 2; -if (A[ mid ] >= k) ub = mid ; -else lb = mid ; -} -return ub ; + while (ub - lb > 1){ + int mid = (lb + ub ) / 2; + if (number_of_spear(mid) >= k) lb = mid ; + else ub = mid ; + } + return lb ; // 少し変更 } From ac7c8b211954c60712fcd472004204ba32cadaa0 Mon Sep 17 00:00:00 2001 From: Takumi_Hirose Date: Mon, 27 Jun 2022 23:40:42 +0900 Subject: [PATCH 4/7] finish --- src/apple.c | 15 ++++++--------- src/array.c | 12 ++++++------ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/apple.c b/src/apple.c index 4b43b6c..a630e21 100644 --- a/src/apple.c +++ b/src/apple.c @@ -5,23 +5,20 @@ int n; int k; int A[100000]; -unsigned int number_of_bag(int x){ - int res = 0; - for (int t=0;t 1){ int mid = (lb + ub ) / 2; - if (number_of_bag(mid) <= k) ub = mid ; + if (check(mid)) ub = mid ; else lb = mid ; -} - - +} return ub ; } diff --git a/src/array.c b/src/array.c index 4f70689..23ad012 100644 --- a/src/array.c +++ b/src/array.c @@ -6,11 +6,11 @@ int k; int A[100000]; unsigned int binary_search (int lb, int ub, int k){ -while (ub - lb > 1){ -int mid = (lb + ub ) / 2; -if (A[ mid ] >= k) ub = mid ; -else lb = mid ; -} + while (ub - lb > 1){ + int mid = (lb + ub ) / 2; + if (A[ mid ] >= k) ub = mid ; + else lb = mid ; + } return ub ; } @@ -25,7 +25,7 @@ int main(){ lb=0; ub=n; - + int res=0; res = binary_search(lb, ub, k); printf("%d\n", res); From 2aa1e0ec44aa4757721cd8e0a114dc10ad03e82e Mon Sep 17 00:00:00 2001 From: Takumi_Hirose Date: Mon, 27 Jun 2022 23:40:54 +0900 Subject: [PATCH 5/7] finish --- src/works.c | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/works.c b/src/works.c index 766d543..1a75595 100644 --- a/src/works.c +++ b/src/works.c @@ -1,17 +1,51 @@ + #include int n; int k; int A[100000]; +int check(int x){ + int tmp=0, count=1; + for(int t=0;t x){ + t--; + tmp=0; + count++; + } + if(count > k)return 0; + } + return 1; +} + +unsigned int binary_search (int lb, int ub, int k){ + while (ub - lb > 1){ + int mid = (lb + ub ) / 2; + if (check(mid)) ub = mid ; + else lb = mid ; + +} + return ub ; +} + int main(){ - int i, lb, ub; - scanf("%d%d", &n, &k); - for(i = 0; i < n; i++){ + int i, ub, lb; + scanf("%d%d", &n, &k); + for(i = 0; i < n; i++){ scanf("%d", &A[i]); - } + } + + + lb=0; + ub=1000000000; + + + int res=0; + res = binary_search(lb, ub, k); + printf("%d\n", res); - return 0; + return 0; } From aad21e2e9c5dea5380ed328794a396579456ee95 Mon Sep 17 00:00:00 2001 From: Takumi_Hirose Date: Mon, 4 Jul 2022 22:12:15 +0900 Subject: [PATCH 6/7] revise apple --- src/apple.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/apple.c b/src/apple.c index a630e21..130ce3b 100644 --- a/src/apple.c +++ b/src/apple.c @@ -6,10 +6,11 @@ int k; int A[100000]; unsigned int check(int x){ - int - for(int t=0;t Date: Mon, 4 Jul 2022 22:14:42 +0900 Subject: [PATCH 7/7] finish --- src/array.c | 4 ++-- src/spear.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/array.c b/src/array.c index 23ad012..dff0b98 100644 --- a/src/array.c +++ b/src/array.c @@ -22,8 +22,8 @@ int main(){ } - lb=0; - ub=n; + lb=-1; + ub=n+1; int res=0; diff --git a/src/spear.c b/src/spear.c index 55afbea..76683a9 100644 --- a/src/spear.c +++ b/src/spear.c @@ -31,8 +31,8 @@ int main(){ } - lb=0; - ub=1000000000; + lb=-1; + ub=1000000001; int res=0;