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; } diff --git a/src/array.c b/src/array.c index 13ed925..ffe7a26 100644 --- a/src/array.c +++ b/src/array.c @@ -4,15 +4,19 @@ int n; int k; int A[100000]; - int main(){ int i, lb, ub; scanf("%d%d", &n, &k); 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("%u", ub); return 0; } diff --git a/src/spear.c b/src/spear.c index 766d543..3962aae 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 = 1000000001; + 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; } diff --git a/src/works.c b/src/works.c index 766d543..1679b20 100644 --- a/src/works.c +++ b/src/works.c @@ -4,6 +4,30 @@ int n; int k; int A[100000]; +int worktimesum(int A[], int n){ + int i, sum=0; + for(i=0; i x) return 0; + else{ + if(x - timesum >= A[i]){ + timesum+=A[i]; + i++; + } + else{ + timesum = 0; + count++; + } + } + } + if(count >= k) return 0; + return 1; +} int main(){ int i, lb, ub; @@ -12,6 +36,19 @@ int main(){ scanf("%d", &A[i]); } + lb = 0; + ub = worktimesum(A, n); + 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; }