eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Мінімаксне паросполучення

Мінімаксне паросполучення

Задано повний дводольний граф, кожна доля якого складається з \textbf{N} вершин. Кожній з вершин приписано вагу - ціле число. Вага ребра визначається як добуток ваг вершин, які воно з'єднує. Як відомо, паросполученням у графі називається множина ребер, які попарно не мають спільних вершин. Паросполучення називають досконалим, якщо воно покриває всі вершини графа, тобто кожна вершина графа інцидентна якомусь ребру паросполучення. Ваша задача - знайти досконале мінімаксне паросполучення, тобто таке, що максимальна з ваг ребер паросполучення буде мінімально можливою. \InputFile У першому рядку вхідного файлу задано ціле число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{10^5}). У другому рядку - \textbf{N} цілих чисел, що не перевищують за абсолютною величиною \textbf{10^9}. \textbf{i}-те число у рядку задає вагу \textbf{i}-ої вершини пешої долі графа. У третьому рядку аналогічним чином представлені ваги вершин другої долі. Вершини кожної доли мають номери від \textbf{1} до \textbf{N}. \OutputFile У першому рядку вихідного файлу виведіть одне ціле число - вагу досконалого мінімаксного паросполучення, тобто максимальну з ваг його ребер. А у другому рядку опису цього паросполучення - \textbf{N} цілих чисел, \textbf{i}-те з яких означає номер вершини у другій долі, з якою з'єднана ребром паросполучення \textbf{i}-та вершина першої долі.
Ліміт часу 2 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3
1 2 3
9 10 11
Вихідні дані #1
27
3 2 1
Автор В.Неспирный
Джерело Зимние сборы в Харькове 2010 День 1