Ограничения: время – 1s/2s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
После пиратов на берегу острова остались `N` пустых бутылок и `N` пробок от них. У всех бутылок горлышко
имеет разный диаметр, и каждая пробка подходит только к одной из бутылок.
Напишите подпрограмму void solve(int N), которая установит соответствие между пробками и бутылками.
Этой подпрограмме передается одно целое числа – количество пробок и бутылок `N` (`1\ ≤\ N\ ≤\ 10000`).
Подпрограмма должна вызывать функцию int query(int i, int j), где `i` – номер пробки, а `j` – номер бутылки (`1\ ≤\ i,\ j\ ≤\ N`),
которая возвращает –1, если диаметр пробки `i` меньше диаметра
горлышка бутылки `j`, или 1, если пробка больше, или 0, если
пробка точно подходит. Подпрограмма может сделать не более 500000 запросов. Когда подпрограмма
полностью определит соответствие между бутылками и пробками, она должна вызвать функцию
void report(int r[]), в качества аргумента которой передается массив из целых чисел от 1 до `N`, и завершить работу.
`(i-1)`-й элемент в этом массиве указывает номер пробки для `i`-й бутылки.