JSFiddle - React, Tailwind, and code Playground
by karthick6891
JavaScript
var inputArr=['6','a b c aa d b','1 2 3 4 5 6','3','1 5 caaab','0 4 xyz','2 4 bcdybc']
function readLine(){
return inputArr.shift();
}
/*******copy from here******************/
function Node() {
this.index = [];
this.indexH = [];
this.children = {};
}
function Trie() {
var root = new Node();
function add(word, node, index, health) {
var char, previousHealth = 0, len;
if (word === '') {
len = node.index.length;
if (len) {
previousHealth = node.indexH[len-1];
}
node.index.push(index);
node.indexH.push(health + previousHealth);
return;
}
char = word[0];
if (!node.children[char]) {
node.children[char] = new Node();
}
add(word.substr(1), node.children[char], index, health);
}
return {
add: function(word, index, health) {
add(word, root, index, health);
},
getRoot: function() {
return root;
}
}
}
function findIndex(arr, start, end, val) {
var index = Math.floor((end - start) / 2) + start;
if (arr[index] === val) return index;
if (arr[start] === val) return start;
if (arr[end] === val) return end;
if (arr[index] > val) {
end = index;
} else {
start = index;
}
if (end - start <= 1) {
if (arr[end] < val) {
return end;
}
return start;
}
return findIndex(arr, start, end, val);
}
function main() {
var n = parseInt(readLine());
var genes = readLine().split(' ');
var health = readLine().split(' ');
health = health.map(Number);
var s = parseInt(readLine());
/***************/
var trie = new Trie();
var minRating = null;
var maxRating = null;
genes.forEach((gene, index) => {
trie.add(gene, index, health[index]);
});
/***************/
for(var a0 = 0; a0 < s; a0++){
var...