Доступно n билетов на концерт, каждый по определенной цене. Затем один за другим приходят m клиентов.
Каждый клиент объявляет максимальную цену, которую он готов заплатить за билет, и после этого он получит билет с ближайшей возможной ценой. так, чтобы она не превышала максимальную цену.
Ввод:
Первая строка ввода содержит целые числа n и m: количество билетов и количество клиентов.
Следующая строка содержит n целых чисел h_1,h_2,...,h_n: цена каждого билета.
Последняя строка содержит m целых чисел t_1,t_2,...,t_m: максимальная цена для каждого покупателя в порядок их прибытия.
Вывод:
Выведите для каждого покупателя цену, которую он заплатит за свой билет. После этого билет нельзя купить повторно.
Если покупатель не может получить ни одного билета, выведите -1.
Ограничения:
1 меньше или равно n , m меньше или равно 2 раза 10^5
1 меньше или равно h_i, t_i меньше или равно 10^9
Пример
Ввод :
5, 3,
5, 3, 7, 8, 5,
4, 8, 3
Выход:
3 ,8,-1
Моя попытка:
Код: Выделить всё
#include
#include
int main()
{
int n;
int m;
std::cin >> n;
std::cin >> m;
std::multiset price;
std::multiset max;
int input;
for (int i = 0; i < n; i++)
{
std::cin >> input;
price.insert(input);
}
for (int i = 0; i < m; i++)
{
std::cin >> input;
max.insert(input);
}
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... s-question
Мобильная версия