var NumberContainers = function () {
this.indexes = new Map()
this.numberIndexes = new Map()
}
NumberContainers.prototype.change = function (index, number) {
this.indexes.set(index, number)
this.getQueue(number).enqueue(index)
}
NumberContainers.prototype.find = function (number) {
const queue = this.getQueue(number)
while (queue.size() && this.indexes.get(queue.front()) !== number) {
queue.dequeue()
}
return queue.size() ? queue.front() : -1
}
NumberContainers.prototype.getQueue = function (number) {
if (!this.numberIndexes.has(number)) {
const queue = new PriorityQueue({ compare: (a, b) => a - b })
this.numberIndexes.set(number, queue)
}
return this.numberIndexes.get(number)
}