We draw N discs on a plane. The discs are numbered from 0 to N − 1. An array A of N non-negative integers, specifying the radiuses of the discs, is given. The J-th disc is drawn with its center at (J, 0) and radius A[J].
We say that the J-th disc and K-th disc intersect if J ≠ K and the J-th and K-th discs have at least one common point (assuming that the discs contain their borders).
The figure below shows discs drawn for N = 6 and A as follows:
A[0] = 1 A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 4 A[5] = 0There are eleven (unordered) pairs of discs that intersect, namely:
- discs 1 and 4 intersect, and both intersect with all the other discs;
- disc 2 also intersects with discs 0 and 3.
Write a function:
function solution(A);
that, given an array A describing N discs as explained above, returns the number of (unordered) pairs of intersecting discs. The function should return −1 if the number of intersecting pairs exceeds 10,000,000.
Given array A shown above, the function should return 11, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [0..100,000];
- each element of array A is an integer within the range [0..2,147,483,647].
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
base
})
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
items.sort((a,b) => a.start - b.start)
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
items.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < item)
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles.
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while ()
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] )
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >)
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end > circles[j].start)
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if ()
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (count)
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
}
}
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = -;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i];
end: i + A[i];
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
solution.js:13 start: i - A[i]; ^ SyntaxError: Unexpected token ; at createScript (vm.js:80:10) at Object.runInNewContext (vm.js:135:10) at getSolution (/tmp/exec.js:392:29) at Promise.resolve.then (/tmp/exec.js:426:34) at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7) at Function.Module.runMain (module.js:686:11) at startup (bootstrap_node.js:187:16) at bootstrap_node.js:608:3
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
let samStart = 0;
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
[0, 1, 2]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
[0, 1, 2]
[5]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
[0, 1, 2]
[5]
[10, 1, 1, 1, 1, 1]
function result: 3
function result: 0
function result: 12
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
[0, 1, 2]
[5]
[10, 1, 1, 1, 1, 1]
function result: 3
function result: 0
function result: 12
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let circles = [];
let count = 0;
const LIMIT = 10000000;
for (let i = 0; i < A.length; i++) {
circles.push({
id: i,
start: i - A[i],
end: i + A[i],
})
}
circles.sort((a,b) => a.start - b.start);
for (let i = 0; i < circles.length; i++) {
let circle = circles[i];
let j = i + 1;
while (circles[j] && circle.end >= circles[j].start) {
if (++count > LIMIT) {
return -1;
}
j++;
}
}
return count;
}
The solution obtained perfect score.