В прототипе рекламной сети продажа рекламных мест устроена следующим образом: покупатели заранее называют свою цену, а на каждое рекламное место отвечают, готовы они его купить или нет.
Необходимо реализовать функцию, которая перед продажей рекламного места будет ожидать согласия или отказа от покупателей с высокой ценой ставки, а затем продаст рекламное место покупателю с самой высокой ценой среди тех, кто согласился на покупку.
Вернуть ответ из функции нужно настолько быстро, насколько это возможно. Нужно вернуть индекс покупателя.
Пример #1
Покупатели предлагают цену 1, 5, 10
Покупатель с предложением 10 ответил отказом
Покупатель с предложением 1 ответил согласием // Всё ещё ждём, поскольку может ответить покупатель с ценой 5
Покупатель с предложением 5 ответил согласием // Выбираем покупателя с предложением 5
Пример #2
Покупатели предлагают цену 1, 5, 10
Покупатель с предложением 10 ответил отказом
Покупатель с предложением 5 ответил согласием // Не ждём ответа от покупателя с предложением 1 - его точно не выберем
Пример #3
Покупатели предлагают цену 1, 2
Покупатель с предложением 1 ответил отказом
Покупатель с предложением 2 ответил отказом // Не выбираем ни одного покупателя
type Buyer={price: number,accepts:()=>Promise<boolean>,}asyncfunctionbestBuyer(buyers:Buyer[]){return-1;}