Your browser is not supported. Please, update your browser or switch to a different one. Learn more about which browsers are supported.
Task description
You are given integers K, M and a non-empty array A consisting of N integers. Every element of the array is not greater than M.
You should divide this array into K blocks of consecutive elements. The size of the block is any integer between 0 and N. Every element of the array should belong to some block.
The sum of the block from X to Y equals A[X] + A[X + 1] + ... + A[Y]. The sum of empty block equals 0.
The large sum is the maximal sum of any block.
For example, you are given integers K = 3, M = 5 and array A such that:
A[0] = 2 A[1] = 1 A[2] = 5 A[3] = 1 A[4] = 2 A[5] = 2 A[6] = 2The array can be divided, for example, into the following blocks:
- [2, 1, 5, 1, 2, 2, 2], [], [] with a large sum of 15;
- [2], [1, 5, 1, 2], [2, 2] with a large sum of 9;
- [2, 1, 5], [], [1, 2, 2, 2] with a large sum of 8;
- [2, 1], [5, 1], [2, 2, 2] with a large sum of 6.
The goal is to minimize the large sum. In the above example, 6 is the minimal large sum.
Write a function:
function solution(K, M, A);
that, given integers K, M and a non-empty array A consisting of N integers, returns the minimal large sum.
For example, given K = 3, M = 5 and array A such that:
A[0] = 2 A[1] = 1 A[2] = 5 A[3] = 1 A[4] = 2 A[5] = 2 A[6] = 2the function should return 6, as explained above.
Write an efficient algorithm for the following assumptions:
- N and K are integers within the range [1..100,000];
- M is an integer within the range [0..10,000];
- each element of array A is an integer within the range [0..M].
Task timeline
Invalid result type, integer expected, 'undefined' found Perhaps you are missing a 'return'?
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (K >= A.length) {
return A.sort((a,b) => a-b)[A.length-1]
}
return 1
}
[10, 3, [1, 2, 3]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (K >= A.length) {
return A.sort((a,b) => a-b)[A.length-1]
}
return 1
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let minMax = 0;
let sum = 0;
for (let i = 0; i < A.length; )
if (K >= A.length) {
return Math.max(...A);
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let minMax = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
minMax = Math.max(min)
}
if (K >= A.length) {
return Math.max(...A);
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let minMax = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
minMax = Math.max(min, A[i]);
}
if (K >= A.length) {
return Math.max(...A);
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K >= A.length) {
return Math.max(...A);
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return Math.max(...A);
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
while ()
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
while (min < max) {
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
while (min <= max) {
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
while (min <= max) {
let temp
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid =0
while (min <= max) {
let temp
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= max) {
let temp = mid;
mid = parse
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= max) {
let temp = mid;
mid = parseInt()
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= max) {
let temp = mid;
mid = parseInt(min + sum)
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break
}
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0]
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
let blocks = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid)
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} e
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} else {
max = mid;
}
}
return 1
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} else {
max = mid;
}
}
return max
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return max
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
console.log('->')
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
console.log('-> sum, min, mid, blocks, K:', sum.)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
console.log('-> sum, min, mid, blocks, K:', sum, min, mid, blocks, K)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
-> sum, min, mid, blocks, K: 15 5 10 2 3 -> sum, min, mid, blocks, K: 10 5 7 3 3 -> sum, min, mid, blocks, K: 7 5 6 3 3 -> sum, min, mid, blocks, K: 6 5 5 4 3 -> sum, min, mid, blocks, K: 6 6 6 3 3
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
console.log('-> sum, min, mid, blocks, K:', sum, min, mid, blocks, K)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
-> sum, min, mid, blocks, K: 15 5 10 2 3 -> sum, min, mid, blocks, K: 10 5 7 3 3 -> sum, min, mid, blocks, K: 7 5 6 3 3 -> sum, min, mid, blocks, K: 6 5 5 4 3 -> sum, min, mid, blocks, K: 6 6 6 3 3
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
// console.log('-> sum, min, mid, blocks, K:', sum, min, mid, blocks, K)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
// console.log('-> sum, min, mid, blocks, K:', sum, min, mid, blocks, K)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
// console.log('-> sum, min, mid, blocks, K:', sum, min, mid, blocks, K)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
[10, 3, [1, 2, 3]]
[10, 3, [1, 1, 1, 1, 1]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
// write your code in JavaScript (Node.js 8.9.4)
let min = 0;
let sum = 0;
for (let i = 0; i < A.length; i++) {
sum += A[i];
min = Math.max(min, A[i]);
}
if (K === 1) {
return sum;
} else if (K >= A.length) {
return min;
}
let mid = 0;
while (min <= sum) {
let temp = mid;
mid = parseInt((min + sum) / 2)
if (mid === temp) {
break;
}
let blocks = blocksNeeded(A, mid);
// console.log('-> sum, min, mid, blocks, K:', sum, min, mid, blocks, K)
if (blocks > K) {
min = mid + 1;
} else {
sum = mid;
}
}
return sum;
}
function blocksNeeded(A, x) {
let count = 1;
let sum = A[0];
for (let j = 1; j < A.length; j++) {
if (sum + A[j] > x) {
sum = A[j];
count++
} else {
sum += A[j];
}
}
return count;
}
The solution obtained perfect score.