You are given two non-empty arrays A and B consisting of N integers. These arrays represent N planks. More precisely, A[K] is the start and B[K] the end of the K−th plank.
Next, you are given a non-empty array C consisting of M integers. This array represents M nails. More precisely, C[I] is the position where you can hammer in the I−th nail.
We say that a plank (A[K], B[K]) is nailed if there exists a nail C[I] such that A[K] ≤ C[I] ≤ B[K].
The goal is to find the minimum number of nails that must be used until all the planks are nailed. In other words, you should find a value J such that all planks will be nailed after using only the first J nails. More precisely, for every plank (A[K], B[K]) such that 0 ≤ K < N, there should exist a nail C[I] such that I < J and A[K] ≤ C[I] ≤ B[K].
For example, given arrays A, B such that:
A[0] = 1 B[0] = 4 A[1] = 4 B[1] = 5 A[2] = 5 B[2] = 9 A[3] = 8 B[3] = 10four planks are represented: [1, 4], [4, 5], [5, 9] and [8, 10].
Given array C such that:
C[0] = 4 C[1] = 6 C[2] = 7 C[3] = 10 C[4] = 2if we use the following nails:
- 0, then planks [1, 4] and [4, 5] will both be nailed.
- 0, 1, then planks [1, 4], [4, 5] and [5, 9] will be nailed.
- 0, 1, 2, then planks [1, 4], [4, 5] and [5, 9] will be nailed.
- 0, 1, 2, 3, then all the planks will be nailed.
Thus, four is the minimum number of nails that, used sequentially, allow all the planks to be nailed.
Write a function:
function solution(A, B, C);
that, given two non-empty arrays A and B consisting of N integers and a non-empty array C consisting of M integers, returns the minimum number of nails that, used sequentially, allow all the planks to be nailed.
If it is not possible to nail all the planks, the function should return −1.
For example, given arrays A, B, C such that:
A[0] = 1 B[0] = 4 A[1] = 4 B[1] = 5 A[2] = 5 B[2] = 9 A[3] = 8 B[3] = 10 C[0] = 4 C[1] = 6 C[2] = 7 C[3] = 10 C[4] = 2the function should return 4, as explained above.
Write an efficient algorithm for the following assumptions:
- N and M are integers within the range [1..30,000];
- each element of arrays A, B and C is an integer within the range [1..2*M];
- A[K] ≤ B[K].
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
for (let)
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length = maxB})
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB})
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB+1}, () => 0)
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid =
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 0; )
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 0; )
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
f
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
t
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, (v,i) => 0);
for (let i = 0; i < mid; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, (v,i) => i < mid ? 0 : 1);
for (let i = 0; i < mid; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, (v,i) => i < mid ? 0 : 1);
for (let i = 0; i < totalNails.length; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, (v,i) => i < mid ? 0 : 1);
for (let i = 1; i < totalNails.length; i++) {
totalNails[]
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < )
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
le
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, )
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails)
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result =
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible =
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length, i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = Array.from({ length: maxB+1}, () => 0);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
let totalNails = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
let totalNails = totalNailsInitial
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:')
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
co
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
max = mid;
} else {
min = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return min;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
console.log(totalNails)
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
console.log(totalNails);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
console.log(result)
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
console.log(totalNails);
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid + 1;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return beg+1;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return end;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return end;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return end;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
let lastPossible = 0;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return end;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let possible = false;
let lastPossible = 0;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
possible = true;
lastPossible =
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return end;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid + 1;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
if (possible) {
return end;
} else {
return -1;
}
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid + 1;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
cosn
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
console.log()
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
console.log('-> beg, end, mid:', beg, end, mid)
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log(totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial;
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial;
co
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial;
console.log(totalNails)
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slic;
console.log(totalNails)
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
console.log(totalNails)
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
console.log('!res')
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
console.log('res')
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, C) {
// write your code in JavaScript (Node.js 8.9.4)
let maxB = Math.max(...B);
let beg = 0;
let end = C.length;
let lastPossible = -1;
if (end === 1) {
if(A[0] <= C[0] && B[0] >= C[0]) {
return 1;
} else {
return -1;
}
}
const totalNailsInitial = Array.from({ length: maxB+1}, () => 0);
while (beg <= end) {
let mid = Math.round((beg + end) / 2);
let totalNails = totalNailsInitial.slice();
for (let i = 0; i < mid; i++) {
totalNails[C[i]] = 1;
}
for (let i = 1; i < maxB + 1; i++) {
totalNails[i] += totalNails[i-1];
}
// console.log('-> beg, end, mid, nails:', beg, end, mid, totalNails)
let result = checkNailed(A, B, totalNails);
if (result) {
lastPossible = mid;
if (end === mid) {
break;
}
end = mid;
} else {
beg = mid;
}
}
return lastPossible;
}
function checkNailed(A, B, totalNails) {
for (let i = 0; i < A.length; i++) {
if (totalNails[A[i] - 1] === totalNails[B[i]]) {
return false;
}
}
return true;
}
The submission is being evaluated.