Обработка математики: 100%

printРабочее место участника

printЗадачи

2315. Пробки и бутылки-2

Ограничения: время – 1s/2s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение 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-й бутылки.
loading